如何克隆jtable

时间:2016-08-05 21:31:30

标签: java swing netbeans jtable clone

启者

简而言之,我的问题是"如何在Netbeans中开发的GUI中克隆jTable。"

稍微详细一点,我有一个jTabbedPane,其中包含两个标签 - myTab1myTab2。两个选项卡都有一个jTable,它将显示derby数据库中的列。每次更新数据库中的数据时,我都希望更新jTables以反映新信息。基本上,两个jTables将在每个单元格中显示相同的数据,并且只要对一个单元格进行更改,就会对另一个单元格进行自动更改。

显然,我可以做到这一点。每当执行子程序(更改数据库中的数据)时,我都可以使用UpdateMyTable1()UpdateMyTable2()例程来进行更改。但是,在我的情况下,UpdateMyTable1()函数/方法/子例程需要相当冗长,而UpdateMyTable1()将由与UpdateMyTable2()几乎完全相同的代码组成。会有很多冗余代码。

在Neatbeans中,有没有办法以这样的方式实例化(或以其他方式创建)两个jTables,使得它们总是镜像彼此的内容而无需长时间编写代码?

2 个答案:

答案 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;
    }
}