Текст JLabel исчезает после менее чем секунды
Вопрос
Я сделал JFrame в NetBeans (в настоящее время он содержит только один JLabel), который подключается к базе данных и получает поле и отображает его в JLABEL. Когда я запускаю программу, JLabel отображает поле меньше, чем в секунду, то текст в JLabel исчезает !! Кто-нибудь может сказать мне, почему это происходит? Я также попробовал его в jtextfield, также одинаковую проблему.
код:
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
}
Решение
Я предполагаю, что где-то еще в вашем коде вы очищаете поле.
Ищите свой код для мест, где
- Вы делаете Settext («»);
- Удалите этикетку с экрана
- Нарисуйте другой компонент на верхней части этикетки
- внедрили свой собственный метод рисования.
В качестве альтернативы, отправьте вам код здесь. Ваш вопрос далеко, чтобы расплыть, чтобы дать четкий определенный ответ.
Редактировать: После шоу кода
Ваш метод FORAOLL не является статическим, что означает, что вам придется создать объект кадра для его вызова. Затем, в конце этого метода вы создаете новый кадр с кодом
java.awt.EventQueue.invokeLater(new Runnable(){public void run(){new frame().setVisible(true);}});
Это не имеет смысла. Здесь здесь больше происходит, так как это не весь ваш код, но я думаю, что вышеуказанная линия кода является отправной точкой для некоторых (если не всех) ваших проблем.