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

AWT/Swing Java Discussion :

Affichage d'une liste dans un jPanel


Sujet :

AWT/Swing Java

  1. ###raw>post.musername###
    Membre régulier
    Affichage d'une liste dans un jPanel
    Bonjour la Communauté,

    J'essaie d'afficher le résultat d'un resultset dans un JPanel mais cela ne fonctionne.
    Dans un textArea cela fonctionne. Mais le probleme c'est que l'on sait écrire dedans.

    Merci pour vos conseils.

    Habiler

    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
     
        private void intEmployeeNbrFocusLost(java.awt.event.FocusEvent evt) {                                         
            searchPerson();
            // TODO add your handling code here:
            System.out.println("TextArea -1:" + EmployeeNbr);
            try {
                Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Ecran.class.getName()).log(Level.SEVERE, null, ex);
            }
     
            try {
                // establishing connection
                conn = DriverManager.getConnection("jdbc:ucanaccess://c:/Users\\hab\\Desktop\\Decisions1.accdb","","");
            } catch (SQLException ex) {
                Logger.getLogger(Ecran.class.getName()).log(Level.SEVERE, null, ex);
            }
            //JLabel lblFname, lblLname, lblPhoneNumber;
     
            PreparedStatement ps;
            int EmployeeNbr = Integer.parseInt(intEmployeeNbr.getText());
            try {
                System.out.println("TextArea 1:" + EmployeeNbr);
                String SQL = "SELECT * FROM Decisions where EmployeeNbr = ?";
                ps = conn.prepareStatement(SQL);
                ps.setInt(1 , EmployeeNbr);
                ResultSet rs2 = ps.executeQuery();
     
                System.out.println("TextArea 2:" + EmployeeNbr);
     
                while ( rs2.next()) {
                    //  String newValue = Double.toString(Math.floor(EmployeeNbr));
                    int newDecNumber = (int)Math.floor(DecNumber);
                    int newEmployeeNbr = (int)Math.floor(EmployeeNbr);
                    int newPourcent = (int)Math.floor(Pourcent);
     
                    long nelleValEmployeeNbr = new Double(newEmployeeNbr).longValue();
                    long nelleValDecNumber = new Double(newDecNumber).longValue();
                    long nelleValPourcent = new Double(newPourcent).longValue();
     
                    System.out.println("NewValue:" + nelleValEmployeeNbr);
                    String ListeSQL = (rs2.getString(1) + " " +nelleValEmployeeNbr + " " + nelleValDecNumber+ " "+ nelleValPourcent+"\n");
                    jTextArea1.append(ListeSQL);
                    jTextArea1.append(rs2.getString(1));
     
                    System.out.println("panel:" + ListeSQL);
                }
     
                ps.close();
            }catch(SQLException e){
     
                JOptionPane.showMessageDialog(null, e);
            }
     
        }
      0  0

  2. #2
    Membre habitué
    Impossible de mettre du texte directement dans un JPanel...

    Il faut utiliser un JTextPane.

  3. #3
    Membre averti
    Et pourquoi ne pas mettre le résultat du resultset dans une JTable ? La JTable dans un JScrollPane lui-même dans un JPanel ?
    C'est en respectant les autres que l'on se fait respecter.

  4. #4
    Membre habitué
    Perso j'utilise un JDBC Adapter basé sur celui-ci.



    Utilisé comme Model pour ta JTable...et le tour est joué.

    Sun, puis Oracle le fournissait avec le JDK à l'époque...ça fonctionne tjs très bien y compris avec OpenJDK12 et JXTable...j'ai rien trouvé de mieux.

  5. #5
    Membre à l'essai
    Petit tips ;)
    Google et Youtube sont tes amis, un simple JList database java et tu trouve la réponse en 2 secodes .

    Je vais quand même te donner un élément de réponse.

    Je suppose que tu as déclaré ta variable list juste en haut avec un JList liste = new JList();

    J'utilise 2 fonction pour stocker mes données dans une liste en faisant un

    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
    public void ListeXX(JList<String> liste_test){
    //-> c'est ici que tu va définir tes arguments donc la connection à  ta bdd, et ta requête sql.
    PreparedStatement ps;
    DefaultListModel liste = new DefaultListModel();
    try{
    PreparedStatement = taConnection.preparedStatement("SELECT * FROM `TaTable`");
    ResultSet rs = ps.executeQuery();
    while(rs.next()){
    //Ce que tu veux ajouter exemple String test = rs.getString("TaColonne");
    // ajoute tes éléments dans ta colonne avec un .addElement(test);
    }
    liste.setModel(liste);
    } // Rajjoute un catch exception
     
    }


    Et voilà, tu as les idées principales du code à toi de le modifier comme bon te semble et de rajouter des trucs.
    Oublie pas de faire appel à ta liste dans ton main hein, avec ListeXX(liste);

    Voilà voilà, j'espère que ca t'auras aidé

  6. #6
    Membre averti
    Citation Envoyé par HABILER Voir le message
    Bonjour la Communauté,

    J'essaie d'afficher le résultat d'un resultset dans un JPanel mais cela ne fonctionne.
    Dans un textArea cela fonctionne. Mais le probleme c'est que l'on sait écrire dedans.

    Merci pour vos conseils.

    De plus JTextArea n'est pas forcément modifiable par le client.
    setEditable(false) devrait bloquer l'écriture dans le JTextArea après chargement des données.

    Habiler est bien silencieux depuis qu'on lui a apporté moultes réponses.
    C'est en respectant les autres que l'on se fait respecter.

###raw>template_hook.ano_emploi###