如何在java GUI中将String数据作为表打印

时间:2013-07-22 14:35:51

标签: java arrays swing user-interface jtable

我将在java GUI中创建一个表,我在下面找到了示例:

String[] columnNames = {"First Name",
                            "Last Name",
                            "Sport",
                            "# of Years",
                            "Vegetarian"};

    Object[][] rows = {
    {"Kathy", "Smith",
     "Snowboarding", new Integer(5), new Boolean(false)},
    {"John", "Doe",
     "Rowing", new Integer(3), new Boolean(true)},
    {"Sue", "Black",
     "Knitting", new Integer(2), new Boolean(false)},
    {"Jane", "White",
     "Speed reading", new Integer(20), new Boolean(true)},
    {"Joe", "Brown",
     "Pool", new Integer(10), new Boolean(false)}
    };

    final JTable table = new JTable(rows, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(500, 70));
    table.setFillsViewportHeight(true);

这是GUI中的简单Jtable,它显示了如何使用所有设置值添加列和行,但我想要做的是自动打印collumnNames和每一行的值。 例如,我有

String[] columnNames = {"N1","N2","N3","N4"};
Object[][] rows = {{"1", "2","3", "4"},{"5", "6","7", "8"},

columnNames和rows中的所有值都应自动打印到表中。因为columnsNames和rows中的这些值存储在前面程序中的两个不同的数组中,所以我使用for循环并尝试将数组的值传递给桌子。 Array1存储“N1 ... N4”,array2存储“1到8”。对于行的值,它们应该逐个添加到表中,而不是逐行添加。 有没有办法做到这一点请帮忙。

1 个答案:

答案 0 :(得分:0)

如果要动态添加数据行,请不要使用数组作为数据。而是使用DefaultTableModel。代码类似于:

String[] columnNames = {"N1","N2","N3","N4"};
DefaultTableModel model = new DefaultTableModel(columnName, 0);
JTable table = new JTable( model );

然后,当您想要添加数据行时,您可以这样做:

model.addRow( new String[] {"1", "2", "3", "4"} );

编辑:

  

如何逐个添加每行中的每个数据而不是添加包含所有四个值的整行?

这不是表的工作方式。表是基于行的。如果需要,可以添加空行。

model.setRowCount( model.getRowCount() + 1 );

然后您可以使用以下方式单独更新单元格:

model.setValueAt("???", row, column);

但是由您来管理模型以确保您要更新的单元格已存在于模型中。你不能一次只添加一个单元格。

然后你可以更新个人