我有一个JPanel,我需要打开其他具有JTable的窗口(JFrame,JDialog,JOptionPane)。手动填充JTable后需要将其数据恢复到JFrame。
如何做到这一点?
答案 0 :(得分:3)
基本上,你必须在你的JDialog中实现一个JTable所在的方法,就像这样(返回Object [] []只是一个例子,你可以返回任何类型的Collection):
public Object[][] showDialogWithTable() {
//do some needed actions
setVisible(true);
//when user closes JDialog with a JTable collect data from the table
Object[][] data = collectData();
return data;
}
答案 1 :(得分:2)
您可以使用模型类(例如,扩展AbstractTableModel的模型类)。您的JPanel创建最初为空的模型实例。您可以将实例传递给另一个窗口(扩展JFrame,JDialog,..)的构造函数,并从那里将其传递给JTable。
JTable的编辑反映在模型中,您的主窗口仍然可以通过模型实例访问数据。
答案 2 :(得分:2)
JFrame
中需要查看更新的视图应将其自身作为TableModelListener
添加到您的表格模型中。 TableModelEvent
将识别更改的内容。