我有一个从本地MySQL服务器获取信息的表。它可以很好地读取数据并将其发布到GUI上。
我的问题是,当我更改我的table命令时,如何刷新我的表,例如:
private String sql = "select * from profildb.tbl_detailed"; //to
private String sql = "select * from profildb.tbl_detailed where Y.."; //this此操作将在我的Button action Listener中处理;
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");
}
});那么,当我改变字符串的语句时,我需要实现什么才能只更新表呢?
提前谢谢。(如果能给出一个关于DefaultTableModel的例子,那就太棒了)
编辑,你可以在这里看到我的完整代码:http://pastebin.com/eQCJVuKn
发布于 2012-07-08 19:05:50
1)使用Table from Database by @camickr
2)使用ResultsetTableModel之一
3)从Runnable#Thread调用SQL语句,但XxxTableModel的输出必须在invokeLater内部,更多信息请参见Concurency in Swing关于Event Dispatch Thread (EDT)
4)从SwingWorker调用SQL语句,则progress()、publish()或done()的输出应在EDT上
5) DefaultTableModel不需要重写方法fireXxxTableXxx,所有方法都被正确实现
6)逻辑Table from Database (ResultsetTableModel)和Runnable#Thread(SwingWorker)的区别是
Table from Database (ResultsetTableModel)调用EDT上的所有更新,然后图形用户界面等待所有事件完成,从数据库加载数据时图形用户界面不负责任或freezeRunnable#Thread(SwingWorker)所有更新来自后台任务,图形用户界面负责鼠标和键盘事件,https://stackoverflow.com/questions/11382572
复制相似问题