【发布时间】:2015-06-24 09:53:00
【问题描述】:
每当我查询 mysql 数据库时,我都会尝试刷新 UI 中显示的 Jtable。这个想法是在 UI JTable 中显示任何更新的新数据。
UI 类如下。
public class DBView {
private JFrame frame = new JFrame();
private JScrollPane tableScrollPane = new JScrollPane();
private DefaultTableModel dbTable = new DefaultTableModel();
public void setDbTable(DefaultTableModel dbTable) {
this.dbTable = dbTable;
//this.dbTable.repaint();
paintDBTable();
}
public DefaultTableModel getDbTable() {
return dbTable;
}
public DBView() {
initializeFrame();
paintDBTable();
}
private void paintDBTable() {
tableScrollPane.setBounds(20, 350, 400, 80);
frame.getContentPane().add(tableScrollPane);
JTable DBTable = new JTable(dbTable);
tableScrollPane.add(DBTable);
DBTable.setFillsViewportHeight(true);
tableScrollPane.setViewportView(DBTable);
}
/**
* Initialize the contents of the frame.
*/
private void initializeFrame() {
frame.setVisible(true);
frame.setBounds(100, 100, 451, 525);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setTitle("MySQL Database");
}
我正在从另一个模型类调用 setDbTable() 方法。我将一个新的 Jtable 对象输入到 setDbTable() 方法中,并将从数据库中读取的数据输入到新的 Jtable 对象中。
问题出在 setDbTable() 方法内部,我再次使用 paintDBTable() 方法。
我尝试使用 dbTable.fireTableDataChanged() 方法刷新视图,但没有用。
现在的方式,它正在工作。但是使用 setDbTable() 方法进行刷新似乎是一种非常低效的方法。
问题是您是否看到我可以使用为刷新 Jtables 定义的另一种方法?
附:我对 java 和编程很陌生。抱歉,如果代码混乱且问题不清楚。如果有帮助,我可以提供所有代码。为了让问题更清晰,我把原代码中的大部分方法和其他类都去掉了。
【问题讨论】:
标签: java swing user-interface jtable