Java 如何使用一个JButton添加两个、三个或更多jtable
请帮帮我。我的程序中有一个JButton和一个JTextField。通过单击按钮,将创建一个选项卡,其中名称打印在JTextField中,该选项卡中有一个JTable。在JTextField中用另一个名称再次单击按钮,我需要在此新选项卡中使用另一个JTable创建另一个选项卡,但在执行此操作后,第一个选项卡中的JTable将变为空,并且第一个选项卡中的所有信息将进入第二个选项卡。我猜这是因为我的DefaultTableModel只有一个名称。我不知道如何动态生成DefaultTableModel名称。可能吗 以下是我的JButton代码:Java 如何使用一个JButton添加两个、三个或更多jtable,java,swing,jtable,Java,Swing,Jtable,请帮帮我。我的程序中有一个JButton和一个JTextField。通过单击按钮,将创建一个选项卡,其中名称打印在JTextField中,该选项卡中有一个JTable。在JTextField中用另一个名称再次单击按钮,我需要在此新选项卡中使用另一个JTable创建另一个选项卡,但在执行此操作后,第一个选项卡中的JTable将变为空,并且第一个选项卡中的所有信息将进入第二个选项卡。我猜这是因为我的DefaultTableModel只有一个名称。我不知道如何动态生成DefaultTableModel
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个,以及设置最小、首选和最大列大小的积垢。仅包括演示问题所需的内容。