【问题标题】:JLabel text disappears after less than a secondJLabel 文本在不到一秒后消失
【发布时间】:2010-11-21 10:10:51
【问题描述】:

我在 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

}

【问题讨论】:

    标签: java jlabel


    【解决方案1】:

    我猜你代码中的其他地方,你正在清除该字段。

    在您的代码中搜索位置

    • 你确实 setText("");
    • 从屏幕上移除标签
    • 在标签顶部绘制另一个组件
    • 已经实现了自己的绘制方法。

    或者,在此处发布您的代码。您的问题很模糊,无法给出明确的答案。

    编辑:跟随你的代码展示

    您的doingAll 方法不是静态的,这意味着您必须创建一个框架对象才能调用它。然后,在该方法结束时,您将使用代码创建一个新框架

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

    这没有意义。这里还有更多内容,因为这不是您的全部代码,但我想上面的代码行是您的一些(如果不是全部)问题的起点。

    【讨论】:

    • 这是我使用的代码,doingAll() 函数连接到数据库,检索字段并将其显示在 JLabel 和 JTextField 中。但正如我所说,文本仅显示不到 2 秒。
    • 这一行其实在我第一次创建netbeans项目的时候就已经存在了,我把它删了,问题就解决了!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 2013-10-20
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多