2010-11-21 4 views
0

J'ai créé un JFrame dans netbeans (il ne contient actuellement qu'un seul JLabel) qui se connecte à la base de données et obtient un champ et l'affiche dans le JLabel. lorsque j'exécute le programme, le JLabel affiche le champ pendant moins d'une seconde, puis le texte dans le JLabel disparaît !! Quelqu'un peut-il me dire pourquoi cela se passe-t-il? J'ai également essayé dans un JTextField, également le même problème.Le texte JLabel disparaît après moins d'une seconde

code:

public class frame extends javax.swing.JFrame { 

    public frame() { 
     initComponents(); 
    } 

public void doingAll() { 

     StringBuffer message = new StringBuffer(); 
    try { 
     Statement stmt; 
     Class.forName("com.mysql.jdbc.Driver"); 
     String url ="jdbc:mysql://localhost:3306/Junk2"; 
     Connection con = DriverManager.getConnection(url,"root", ""); 
     System.out.println("URL: " + url); 
     System.out.println("Connection: " + con); 
     stmt = con.createStatement(); 

     stmt.executeQuery("select * from Junk2.example"); 
     ResultSet rs = stmt.executeQuery("select * from Junk2.example"); 
     int columns = rs.getMetaData().getColumnCount(); 
     while(rs.next()){ 
     for (int i=1;i<=columns;i++){ 
     message.append(rs.getString(i)+" "); 
     } 
     message.append("\n"); 
     } 
     System.out.println(message); 

     con.close(); 
     }catch(Exception e) { 
     e.printStackTrace(); 
     }//end catch 
     jLabel1.setText(message.toString()); 
     jTextField1.setText(message.toString()); 


     java.awt.EventQueue.invokeLater(new Runnable(){public void run(){new frame().setVisible(true);}}); 

    } 

    // Variables declaration - do not modify 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JTextField jTextField1; 
    // End of variables declaration 

} 

Répondre

2

Je suppose que quelque part ailleurs dans votre code, vous effacez le champ.

Rechercher dans votre code pour les endroits où

  • vous faites setText ("");
  • retirer l'étiquette de l'écran
  • dessiner un autre composant sur le dessus de l'étiquette
  • ont mis en place votre propre méthode de tirage.

Vous pouvez également publier du code ici. Votre question est loin d'être vague pour donner une réponse claire et précise.

modifier: suivant votre code show

Votre méthode doingAll n'est pas statique, ce qui signifie que vous devrez avoir créé un objet cadre pour l'appeler. Puis, à la fin de cette méthode, vous créez une nouvelle trame avec le code

java.awt.EventQueue.invokeLater(new Runnable(){public void run(){new frame().setVisible(true);}}); 

Cela n'a aucun sens. Il y a plus de choses qui se passent ici, car ce n'est pas tout votre code, mais je suppose que la ligne de code ci-dessus est le point de départ de certains (sinon de tous) vos problèmes.

+0

c'est le code que j'utilise, la fonction doingAll() se connecte à la base de données, récupère le champ et l'affiche dans JLabel et JTextField. Mais comme je l'ai dit, le texte n'est affiché que pendant moins de 2 secondes. – SLA

+0

cette ligne était déjà existante quand j'ai créé le projet netbeans, je l'ai juste supprimé et le problème est résolu! Merci! – SLA

Questions connexes