Pergunta

Eu fiz um JFRame no NetBeans (atualmente contém apenas um JLabel) que se conecta ao banco de dados e obtém um campo e o exibirá no JLabel. Quando eu corro o programa, o Jlabel exibe o campo por menos de um segundo, então o texto no Jlabel desaparece !! Alguém pode me dizer por que isso está acontecendo? Eu também tentei em um campo JText, também o mesmo problema.

Código:

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

}
Foi útil?

Solução

Suponho que, em outro lugar do seu código, você está limpando o campo.

Pesquise através do seu código para lugares onde

  • você fazext ("");
  • Remova o rótulo da tela
  • desenhe outro componente sobre o topo da etiqueta
  • implementaram seu próprio método de sorteio.

Como alternativa, poste seu codificador aqui. Sua pergunta é muito vaga para dar uma resposta clara definitiva.

Editar: Seguindo o seu código mostram

Seu método que está fazendo não é estático, o que significa que você terá que ter criado um objeto de quadro para chamá -lo. Então, no final desse método, você está criando um novo quadro com o código

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

Isso não faz sentido. Há mais acontecendo aqui, pois esse não é todo o seu código, mas acho que a linha de código acima é o ponto de partida para alguns (se não todos) de seus problemas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top