启者
简而言之,我的问题是"如何在Netbeans中开发的GUI中克隆jTable。"
稍微详细一点,我有一个jTabbedPane
,其中包含两个标签 - myTab1
和myTab2
。两个选项卡都有一个jTable
,它将显示derby数据库中的列。每次更新数据库中的数据时,我都希望更新jTables
以反映新信息。基本上,两个jTables
将在每个单元格中显示相同的数据,并且只要对一个单元格进行更改,就会对另一个单元格进行自动更改。
显然,我可以做到这一点。每当执行子程序(更改数据库中的数据)时,我都可以使用UpdateMyTable1()
和UpdateMyTable2()
例程来进行更改。但是,在我的情况下,UpdateMyTable1()
函数/方法/子例程需要相当冗长,而UpdateMyTable1()
将由与UpdateMyTable2()
几乎完全相同的代码组成。会有很多冗余代码。
在Neatbeans中,有没有办法以这样的方式实例化(或以其他方式创建)两个jTables
,使得它们总是镜像彼此的内容而无需长时间编写代码?
答案 0 :(得分:2)
解决方案很简单:不要考虑“克隆”,而只是让两个JTable共享表模型。像
这样简单的东西table1.setModel(table2.getModel());
可行。
如果他们共享模型,那么两个JTable中的模型中的更改将相同。
答案 1 :(得分:0)
这里是通过模型共享“克隆”表的有效示例。您可以通过双击单元格来编辑值。更改反映在所有表中。
您应该为IDE中的所有表设置通用模型,并且所有数据更新都应在该通用模型上进行。
import javax.swing.*;
import java.awt.*;
public class CloningTablesExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(CloningTablesExample::runApp);
}
static void runApp(){
JTable original = new JTable(new Object[][]{
{"v1", "v2"},
{"v4", "v5"}
},
new String[]{"col1", "col2"}
);
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().setLayout(new GridLayout(1,3));
window.setSize(400, 300);
window.setVisible(true);
window.getContentPane().add(new JScrollPane(original));
window.getContentPane().add(new JScrollPane(cloneTable(original)));
window.getContentPane().add(new JScrollPane(cloneTable(original)));
}
private static JTable cloneTable(JTable original) {
JTable clone = new JTable();
clone.setModel(original.getModel());
return clone;
}
}