题
我在netbeans中制作了一个JFrame(它目前只包含一个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("");
- 从屏幕上移除标签
- 在标签顶部绘制另一个组件
- 已经实现了自己的绘制方法。
或者,在此处发布您的代码。你的问题太模糊了,无法给出明确的答案。
编辑:按照你的代码显示
您的 doingAll 方法不是静态的,这意味着您必须创建一个框架对象才能调用它。然后,在该方法的末尾,您将使用代码创建一个新框架
java.awt.EventQueue.invokeLater(new Runnable(){public void run(){new frame().setVisible(true);}});
这没有道理。这里还有更多的事情发生,因为这不是您的全部代码,但我想上面的代码行是您的一些(如果不是全部)问题的起点。
不隶属于 StackOverflow