Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用一个JButton添加两个、三个或更多jtable_Java_Swing_Jtable - Fatal编程技术网

Java 如何使用一个JButton添加两个、三个或更多jtable

Java 如何使用一个JButton添加两个、三个或更多jtable,java,swing,jtable,Java,Swing,Jtable,请帮帮我。我的程序中有一个JButton和一个JTextField。通过单击按钮,将创建一个选项卡,其中名称打印在JTextField中,该选项卡中有一个JTable。在JTextField中用另一个名称再次单击按钮,我需要在此新选项卡中使用另一个JTable创建另一个选项卡,但在执行此操作后,第一个选项卡中的JTable将变为空,并且第一个选项卡中的所有信息将进入第二个选项卡。我猜这是因为我的DefaultTableModel只有一个名称。我不知道如何动态生成DefaultTableModel

请帮帮我。我的程序中有一个JButton和一个JTextField。通过单击按钮,将创建一个选项卡,其中名称打印在JTextField中,该选项卡中有一个JTable。在JTextField中用另一个名称再次单击按钮,我需要在此新选项卡中使用另一个JTable创建另一个选项卡,但在执行此操作后,第一个选项卡中的JTable将变为空,并且第一个选项卡中的所有信息将进入第二个选项卡。我猜这是因为我的DefaultTableModel只有一个名称。我不知道如何动态生成DefaultTableModel名称。可能吗

以下是我的JButton代码:

private void bt_AddActionPerformed(java.awt.event.ActionEvent evt) {                                       
    GlobalVars.firmAdd = tf_addFirm.getText();
    DefaultTableModel tableModel = new DefaultTableModel();
    JTable table = new JTable(tableModel);
    tableModel.setDataVector(new Object [][] {}, new String [] {"№", "Дата заказа", "Дата статуса", "Наименование детали", "Оборудование", "Ссылка для фото", "Кол-во", "Номер заказа", "Стоимость", "Срок поставки", "Согласовано", "В обработке", "Сбор заказа", "Заказано"});
    if (table.getColumnModel().getColumnCount() > 0) {
            table.getColumnModel().getColumn(0).setMinWidth(40);
            table.getColumnModel().getColumn(0).setPreferredWidth(40);
            table.getColumnModel().getColumn(0).setMaxWidth(40);
            table.getColumnModel().getColumn(1).setMinWidth(80);
            table.getColumnModel().getColumn(1).setPreferredWidth(80);
            table.getColumnModel().getColumn(1).setMaxWidth(80);
            table.getColumnModel().getColumn(2).setMinWidth(85);
            table.getColumnModel().getColumn(2).setPreferredWidth(85);
            table.getColumnModel().getColumn(2).setMaxWidth(85);
            table.getColumnModel().getColumn(3).setMinWidth(300);
            table.getColumnModel().getColumn(3).setPreferredWidth(300);
            table.getColumnModel().getColumn(3).setMaxWidth(300);
            table.getColumnModel().getColumn(4).setMinWidth(300);
            table.getColumnModel().getColumn(4).setPreferredWidth(300);
            table.getColumnModel().getColumn(4).setMaxWidth(300);
            table.getColumnModel().getColumn(5).setMinWidth(200);
            table.getColumnModel().getColumn(5).setPreferredWidth(200);
            table.getColumnModel().getColumn(5).setMaxWidth(200);
            table.getColumnModel().getColumn(6).setMinWidth(50);
            table.getColumnModel().getColumn(6).setPreferredWidth(50);
            table.getColumnModel().getColumn(6).setMaxWidth(50);
            table.getColumnModel().getColumn(7).setMinWidth(150);
            table.getColumnModel().getColumn(7).setPreferredWidth(150);
            table.getColumnModel().getColumn(7).setMaxWidth(150);
            table.getColumnModel().getColumn(9).setMinWidth(95);
            table.getColumnModel().getColumn(9).setPreferredWidth(95);
            table.getColumnModel().getColumn(9).setMaxWidth(95);
            table.getColumnModel().getColumn(10).setMinWidth(85);
            table.getColumnModel().getColumn(10).setPreferredWidth(85);
            table.getColumnModel().getColumn(10).setMaxWidth(85);
            table.getColumnModel().getColumn(11).setMinWidth(85);
            table.getColumnModel().getColumn(11).setPreferredWidth(85);
            table.getColumnModel().getColumn(11).setMaxWidth(85);
            table.getColumnModel().getColumn(12).setMinWidth(85);
            table.getColumnModel().getColumn(12).setPreferredWidth(85);
            table.getColumnModel().getColumn(12).setMaxWidth(85);
            table.getColumnModel().getColumn(13).setMinWidth(65);
            table.getColumnModel().getColumn(13).setPreferredWidth(65);
            table.getColumnModel().getColumn(13).setMaxWidth(65);
            table.setShowHorizontalLines(true);
            table.setShowVerticalLines(true);
        }
    tb_tabbedPane.addTab(GlobalVars.firmAdd, new JScrollPane(table));
}                                        

谢谢你的回答。问题解决了。我的密码有错误

如果你能创建一个有效的程序并在你的问题中发布,最好能立即向我们展示你的问题。请检查链接以及。至于您的直接问题,“是否可以动态生成DefaultTableModel?”,当然可以。我的问题是为什么你的代码不起作用?为此,请阅读我上面给您的链接。
完成此操作后,第一个选项卡中的JTable变为空,第一个选项卡中的所有信息都会进入第二个选项卡。
-您发布的代码看起来很合理(表明问题出在其他地方,以及您为什么要发布包含所有问题的MCVE)。您正在创建TableModel、JTable和JScrollPane的新实例,因此第一个选项卡没有理由变为空。每个选项卡都应该包含唯一的组件。为什么代码中有if语句?您正在对模型进行硬编码,使其具有13列,因此条件并非始终为真。为了将代码最小化一点,您可能只需要设置首选宽度,然后在TableColumns上使用SetResizeable(false),这将节省您设置最小/最大宽度的时间。在制作MCVE时,请删除14个表列中的12个,以及设置最小、首选和最大列大小的积垢。仅包括演示问题所需的内容。