IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Problème avec ma scrollbar


Sujet :

Composants Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème avec ma scrollbar
    J'ai du mal à arranger le code suivant pr avoir des scrollbars à mon TextArea _txtRes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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++

  2. #2
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    salut,

    la prochaine fois utilise les balises pour encadrer ton code, se sera plus lisible ;-)
    sinon tes scrollbar n'apparaissent pas pour la simple raison que tu construit ton scrollpane contenant ton textarea mais que tu ne l'utilises pas

    tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    milieu.add(_txtRes);
    alors qu'il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    milieu.add(scrollpane);
    @+

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    d'ailleurs à aucun moment tu n'ajoute ta JTextArea à ton JScrollPane
    Donc rajoute également la ligne suivante à ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scrollpane.setViewPortView(_txtRes);

  4. #4
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    sisi il le fait implicitement lors de la création du jscrollpane:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JScrollPane scrollPane = 
    new JScrollPane(_txtRes, 
    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    donc pas besoin de refaire un setViewPortView

    @+

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    oups pardon, ne me réussi pas les nuits sans sommeill.....

Discussions similaires

  1. problème avec un scrollbar
    Par gryffondor8392 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/03/2011, 00h13
  2. Problème avec une scrollBar JavaFx
    Par Stefounette dans le forum JavaFX
    Réponses: 2
    Dernier message: 22/04/2010, 11h39
  3. Problème avec SWT ScrollBar
    Par Bernardo31 dans le forum SWT/JFace
    Réponses: 7
    Dernier message: 22/05/2008, 10h21
  4. problème avec scrollbar
    Par azerty09 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 17/02/2008, 20h01
  5. problème avec les scrollbars
    Par thierry7106 dans le forum Modules
    Réponses: 5
    Dernier message: 13/05/2007, 02h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo