showing not name columns column java mysql swing jtable defaulttablemodel

java - columns - jtable not showing column names



JTable y DefaultTableModel (1)

1) use la tabla de la base de datos por @camickr

2) use uno de los ResultsetTableModel

3) llamar a la sentencia SQL desde Runnable#Thread , pero la salida a XxxTableModel debe estar dentro de invokeLater , más en Concurency en Swing sobre Event Dispatch Thread (EDT)

4) llamar a la instrucción SQL de SwingWorker , luego la salida de progress() , publish() o done() debería estar en EDT

5) DefaultTableModel no requiere anular los métodos fireXxxTableXxx , todos están implementados correctamente

6) Diferencias entre las lógicas de las Table from Database (ResultsetTableModel) y Runnable#Thread(SwingWorker) es

  • Table from Database (ResultsetTableModel) llamando a todas las actualizaciones en EDT, luego se realiza la GUI esperando que ocurra todo el evento, durante la carga de datos de la base de datos la GUI no se responde o se congela

  • Runnable#Thread(SwingWorker) todas las actualizaciones provienen de la tarea backgourng y la GUI es responsable de los eventos del mouse y teclado.

Tengo una tabla que obtiene información de mi servidor MySQL local. Lee los datos muy bien y los publica en la GUI.

Mi pregunta es, ¿cómo puedo actualizar mi tabla cuando cambio mi comando de tabla, por ejemplo:

private String sql = "select * from profildb.tbl_detailed"; //to private String sql = "select * from profildb.tbl_detailed where Y.."; //this

Esta acción se manejará en mi escucha de acción de botón;

JButton btnOK = new JButton(""); btnOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if( (tfBirinci.getText().isEmpty() || tfBirinci.getText() == null) && (tfIkinci.getText().isEmpty() || tfIkinci.getText() == null )) { taLog.setText("Database alani bos birakilamaz.../n"); } else if ( (!(tfBirinci.getText().isEmpty() )) && (tfIkinci.getText().isEmpty() || tfIkinci.getText() == null ) ) { sql = ("SELECT * FROM " + tfBirinci.getText()); taLog.setText("Komut elde edildi : " + sql + "/n"); System.out.println("aaaa " + tfBirinci.getText()); //anaFrame.dispose(); //databaseHistoryCalistir(); doesnt work } else if ( ( !(tfBirinci.getText().isEmpty() ) && !(tfBirinci.getText() == null) ) && ( !(tfIkinci.getText().isEmpty() ) && !(tfBirinci.getText() == null) ) ) { sql = ("SELECT * FROM " + tfBirinci.getText() + " WHERE " + tfIkinci.getText()); taLog.setText("Komut elde edildi : " + sql + "/n" ); System.out.println("bbbb " + tfBirinci.getText()); //anaFrame.dispose(); //databaseHistoryCalistir(); doesnt work }else taLog.setText("Lütfen Database alanini doldurunuz, aksi taktirde komut elde edilemez.../n"); } });

Entonces, ¿qué debo implementar para SOLAMENTE actualizar la tabla cuando cambio la declaración de mi cadena?

Gracias por adelantado. (Sería increíble dar un ejemplo sobre DefaultTableModel)

Editar, puedes ver mi código completo aquí: http://pastebin.com/eQCJVuKn