2010-11-21 2 views
0

Я создал JFrame в netbeans (в нем в настоящее время содержится только одна JLabel), которая соединяется с базой данных и получает поле и отображает его в JLabel. Когда я запускаю программу, JLabel отображает поле менее секунды, затем текст в JLabel исчезает !! Может ли кто-нибудь сказать мне, почему это происходит? Я также пробовал его в JTextField, также та же проблема.Текст JLabel исчезает после менее чем секунды

код:

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 

} 

ответ

2

Я предполагаю, что где-то в вашем коде, вы очищаете поле.

Поиск по коде для тех мест, где

  • вы делаете SetText ("");
  • удалить ярлык с экрана
  • сделать еще один компонент поверх этикетки
  • реализовал свой собственный метод рисования.

В качестве альтернативы отправьте свой код здесь. Ваш вопрос неясен, чтобы дать четкий ответ.

изменение: после вашего кода показывает

Вашего метода doingAll не является статичным, что означает, что вы должны создали объект фрейма назвать его. Затем, в конце этого метода, вы создаете новый кадр с кодом

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

Это не имеет смысла. Здесь больше происходит, так как это не весь ваш код, но я думаю, что вышеприведенная строка кода является отправной точкой для некоторых (если не всех) ваших проблем.

+0

это код, который я использую, функция doAll() подключается к базе данных, извлекает поле и отображает его в JLabel и JTextField. Но, как я уже сказал, текст отображается только менее 2 секунд. – SLA

+0

эта строка на самом деле уже существовала, когда я впервые создал проект netbeans, я просто удалил его, и проблема решена! благодаря! – SLA

Смежные вопросы