Текст JLabel исчезает после менее чем секунды

StackOverflow https://stackoverflow.com/questions/4237334

  •  26-09-2019
  •  | 
  •  

Вопрос

Я сделал 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);}});

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top