Domanda

Ho fatto un JFrame in netbeans ( attualmente contiene solo una JLabel) che si connette al database e ottiene un campo e visualizzare, in JLabel.quando ho eseguito il programma, la JLabel visualizza il campo per meno di un secondo, poi il testo nella JLabel scompare !!Qualcuno può dirmi perché succede questo ?Ho anche provato in un JTextField, anche lo stesso problema.

codice :

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

}
È stato utile?

Soluzione

Sto indovinando che da qualche altra parte nel codice, si sta cancellando il campo.

Ricerca attraverso il codice per i luoghi in cui

  • fare setText("");
  • rimuovere l'etichetta dalla schermata
  • disegnare un altro componente sopra la parte superiore dell'etichetta
  • hanno implementato il proprio metodo draw.

In alternativa, il post è qui il codice.La tua domanda è molto vaga per dare una chiara risposta definitiva.

edit:seguente codice mostra

Il doingAll metodo non è statico, il che significa che si dovrà avere creato un oggetto frame per effettuare la chiamata.Quindi, alla fine di tale metodo, si sta creando un nuovo telaio con il codice

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

Questo non ha senso.C'è di più, questo non è tutto il codice, ma credo che la riga di codice precedente è il punto di partenza per alcuni (se non tutti) dei problemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top