Problème avec ma scrollbar
J'ai du mal à arranger le code suivant pr avoir des scrollbars à mon TextArea _txtRes
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
|
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* Classe permettant de faire des conversions
* entre les francs et les euros.
*
* La classe "hérite" (extends) de JFrame pour pouvoir
* afficher une fenetre à l'écran.
*
* Elle "implémente" (implements) l'Interface ActionListener
* c'est à dire qu'elle doit redéfinir toutes les méthodes
* de cette Interface.
* Ici il n'y en à qu'une : actionPerformed
* Cela permet d'intercepter toutes les actions qui
* se passent dans la fenetre (les clicks par exemple)
*
* @author Duss
*/
public class Convertisseur extends JFrame implements ActionListener
{
// Attributs de la classe
private JLabel _labVal, _labRes;
private JTextField _txtVal;
private JTextArea _txtRes;
private JButton _conv;
private JCheckBox _euro, _franc;
/** Constructeur : c'est la méthode qui se lance
* quand on fait un new sur notre classe
*/
public Convertisseur()
{
// On récupère l'objet de la fenetre
// sur lequel on va pouvoir ajouter
// nos composants graphiques.
Container cont = getContentPane();
// On crée 3 JPanel qui sont des "panneaux"
// sur lesquels on peut poser des composants
// cela va permettre d'avoir une mise en page
// avec 3 layouts différents
JPanel haut = new JPanel();
JPanel milieu = new JPanel();
JPanel bas = new JPanel();
// Le layout de notre panel du haut
// est une grille de 2 lignes et 2 colonnes
// celui du milieu 1 lignes 2 colonnes
haut.setLayout(new GridLayout(2,2));
milieu.setLayout(new GridLayout(1,2));
// Création des JLabels
_labVal = new JLabel("Mot");
_labRes = new JLabel("Resultat");
// Création des JTextField
_txtVal = new JTextField();
// création d'un TextArea
_txtRes = new JTextArea(4, 10);
// les paramètres du TextArea
_txtRes.setEditable(false); // on ne peut pas éditer notre textarea
JScrollPane scrollPane =
new JScrollPane(_txtRes,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
_txtRes.setEditable(false); // on ne peut pas éditer notre textarea
// Création des JCheckBox
_euro = new JCheckBox("Rechercher");
_franc = new JCheckBox("Anagramme");
// Euro est cochée, franc ne l'est pas à la base (au départ)
_euro.setSelected(false);
_franc.setSelected(true);
// Création du bouton
_conv = new JButton("Chercher");
// On indique que notre fenetre (this = la classe dans laquelle
// on se trouve) est chargée "d'écouter" les actions du bouton
// et des cases a cocher
_conv.addActionListener(this);
_euro.addActionListener(this);
_franc.addActionListener(this);
// On ajoute le panel haut en haut de la feuille
// et celui du bas en dessous
cont.add(haut,"North");
cont.add(milieu,"Center");
cont.add(bas, "South");
// On ajoute les composants labels, textField et
// checkBox au panel haut
haut.add(_labVal);
haut.add(_txtVal);
haut.add(_euro);
haut.add(_franc);
milieu.add(_labRes);
milieu.add(_txtRes);
// Le bouton a celui du bas
bas.add(_conv);
}
public void rechercher(String s1, String s2)
{
int j=0;
String newline = "\n";
while( j <s1.length() )
{
if( (s1.charAt(j) == '*') || (s1.charAt(j) == s2.charAt(j)) )
j++;
else
break;
}
if(j == s2.length())
_txtRes.append(s2 + newline);
}
/**
* Méthode de l'interface ActionListener
*
* @param e L'actionEvent correspondant à l'action
*/
public void actionPerformed(ActionEvent e)
{
// En faisant e.getSource() on récupère
// le composant qui à générer l'action
// on peut donc faire des traitements différents
// Cas ou c'est le bouton
// On va faire la conversion
if (e.getSource() == _conv)
{
// Vérification qu'il y a bien quelque chose
// à convertir. Si non, on affiche un message
if (_txtVal.getText().equals(""))
JOptionPane.showMessageDialog(this,"Veuillez saisir une valeur !");
else
{
// là on a cliqué sur le bouton donc
// On teste quel case est cochée
// et on détermine le sens de conversion
if (_euro.isSelected())
{
// euro = rechercher
// on dois mettre à 0 notre textarea
_txtRes.setText("");
Fichieralire f1 = new Fichieralire("fr.txt");
String[] stock = new String[140000];
for (int i=0;f1.ready();i++){
String ligne=f1.readline();
stock[i] = ligne;
// on essaie d'afficher les mots qui ont la meme longueur
if(stock[i].length() == _txtVal.getText().length())
rechercher(_txtVal.getText(), stock[i]);
//anagramme(args[0], stock[i]);
}
// La fonction parseDouble lance des
// exceptions de type numberFormatException
// si le String à parser n'est pas un double valide
// on va donc intercepter cette possible
// exception en l'entourant d'un bloc try/catch
// try sert à prévenir qu'une exception peut survenir
// catch sert à la récupérer et à faire un
// traitement approprié. Ici, l'affichage d'un message
//try
//{
//val = Double.parseDouble(_txtVal.getText());
//}
//catch (NumberFormatException ex)
//{
//JOptionPane.showMessageDialog(this,"Veuillez saisir un nombre !");
//}
// On appelle la fonction pour arrondir
//double res = arrondir(conv(val,sens),2);
// On affiche le texte
// _txtRes.setText(s2);
}
}
// Traitement pour que les 2 cases à cocher
// ne soit pas cochées en même temps :
// Cas ou c'est la case euro qui a généré l'action
// La case franc prend la valeur inverse de euro
if (e.getSource() == _euro)
_franc.setSelected(!_euro.isSelected());
// Cas ou c'est la case franc qui a généré l'action
// La case euro prend la valeur inverse de franc
if (e.getSource() == _franc)
_euro.setSelected(!_franc.isSelected());
}
}
} |
Si qqun peut m'aider, eh ben ca serait cool
a++