Java 将Arraylist导入JTable

Java 将Arraylist导入JTable,java,swing,jtable,Java,Swing,Jtable,我有一个数组字符串,其中包含一些我想打印在GUI上的数据,我开始使用JPanel之类的工具,最后使用Eclipse上的windowbuilder来帮助我修改视觉效果,我认为我的代码很糟糕(或者至少看起来像这样),我找到了一些与我的问题类似的线索,但我没有真正理解这个想法: 我能不能用一个Jtable来代替一堆垃圾?我只是无法理解JTable,我希望它看起来像我的代码输出,但我不明白该表如何读取arraystring和像我的表一样的“输出”,我也不知道如何实现组合框。。。任何帮助都会很有用,谢谢

我有一个数组字符串,其中包含一些我想打印在GUI上的数据,我开始使用JPanel之类的工具,最后使用Eclipse上的windowbuilder来帮助我修改视觉效果,我认为我的代码很糟糕(或者至少看起来像这样),我找到了一些与我的问题类似的线索,但我没有真正理解这个想法:

我能不能用一个Jtable来代替一堆垃圾?我只是无法理解JTable,我希望它看起来像我的代码输出,但我不明白该表如何读取arraystring和像我的表一样的“输出”,我也不知道如何实现组合框。。。任何帮助都会很有用,谢谢

编辑:我的第一个想法是,每个“Jtextfield”将“导入”每个数据行,但我认为这是非常低效的,当我可以简化我的生活时,可能会出现编码错误

下面是渲染代码的图像:

  • 根本不要使用
    null
    布局。尽可能避免设置边界()

  • 如果使用正确的布局,则无需调用
    setBounds()

  • 尊重布局经理,将组件定位和尺寸调整的责任移交给布局经理,这就是为什么它是为布局经理设计的


使用或可以实现相同的布局

有关更多信息,请查看以下链接:


创建表格和模型,然后创建列标题:

DefaultTableModel dftModel = new DefaultTableModel();
JTable mytable = new JTable(dftModel);
myTable.setColumnIdentifiers(new String [] {"Tipo","Column 1","Column 2","Column 3"});
根据需要从arraylist中添加行:

myTable.addRow(new String[] {"",yourArrayList.get(1),"blah","blah"});
添加Tipo组合框,如下所示:

String [] tipArray = {"A","B","C"};
DefaultComboBoxModel comboModel = new DefaultComboBoxModel(tipArray);
JComboBox ComboTipo = new JComboBox(comboModel);
mytable.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(ComboTipo));

使用.toArray()方法将ArrayList移植到数组,然后在构造函数或JTableRead中使用它了解DefaultTableModel和JTable。如果您只想显示数据,这将非常简单。
我可以不使用Jtable来代替吗
——这就是我的建议。它将删除所有变量和空布局代码
我希望它看起来像我的代码输出,但我不明白该表将如何读取数组字符串
查看Swing教程中的部分以获取工作示例。您需要使用
DefaultTableModel
addRow(…)
方法将数据从数组加载到TableModel中。它还显示了如何使用组合框。谢谢你的信息!我以前使用null来确保每个Jtext etc都处于我想要的位置,但现在我看到gridlayout如何自动为Mean执行此操作,以及如何将表中的单元格更改为组合框?就在最左边和最右边?我在想上一个例子看看这个例子,告诉我这是否有用:@pablo,你可能已经知道了,但是我编辑了上面的代码,向你展示了如何将组合框添加到表中。谢谢!我确实认为这会有帮助,但我选择了null,以确保一切都在我想要的地方,但正如你所说的,如果这会自动实现…@pablo如果你使用任何布局,那么布局管理器本身负责管理组件的位置和大小,但在
null
Layout的情况下。GridLayout适用于离散布局组件(例如,电话键盘排列中的编号按钮),但问题是针对类似实体的任意序列的逐行GUI,这是JTable和TableModel最典型的用例。包含每个列的适当控件的GridLayout可以正确布局,但它将是JTable功能(管理任意行数、维护模型、动态创建和交换小部件等)的原始而繁琐的重新实现。
String [] tipArray = {"A","B","C"};
DefaultComboBoxModel comboModel = new DefaultComboBoxModel(tipArray);
JComboBox ComboTipo = new JComboBox(comboModel);
mytable.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(ComboTipo));