Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
如何在JavaGUI中将字符串数据打印为表_Java_Arrays_Swing_User Interface_Jtable - Fatal编程技术网

如何在JavaGUI中将字符串数据打印为表

如何在JavaGUI中将字符串数据打印为表,java,arrays,swing,user-interface,jtable,Java,Arrays,Swing,User Interface,Jtable,我将在java GUI中创建一个表,我发现了以下示例: String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"}; Object[][] rows

我将在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"},
列名称和行中的所有值都应该自动打印到表中。因为列名称和行中的这些值在以前的程序中存储在两个不同的数组中,所以我使用了for循环,并尝试将数组的值传递到表中。阵列1存储“N1…N4”,阵列2存储“1到8”。对于行的值,应该将它们逐个添加到表中,而不是逐行添加。
有什么办法吗?请帮忙

如果要动态添加数据行,则不要对数据使用数组。而是使用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);
但是由您来管理模型,以确保要更新的单元已经存在于模型中。不能一次只添加一个单元格


然后,您可以更新个人

到目前为止您已经完成的任何示例或尝试?打印?哪里标准输出?@aranoid我已经编辑了这个问题,我 可以只打印所有行中包含第一个数据的第一列。看起来很混乱。但是我想知道的是如何从左到右(从1到4)打印数据,而不是在每一行中键入数据。@PaulVargas将数据打印到GUI JtableQuestion没有意义。您谈到在循环中打印,但您的代码不包含循环。在
JTable
中显示数据时通常不使用循环。感谢您的回复,但是如何准确地逐个添加每行中的每个数据,而不是添加包含所有四个值的整行数据?您还没有测试代码。它不能编译。使用列名称而不是columnName@G_G,说真的,对打字错误投反对票?别忘了检查我所有帖子的拼写。我肯定我也犯过一两个拼写错误。我声明代码没有经过测试。代码的思想是将OP指向正确的方向。OP显然明白了。一段代码的输入错误意味着你没有尝试你的解决方案。我不在乎普通英语的拼写错误text@G_G,你真的了解论坛的意义吗?我们来这里是为了给OP指明正确的方向。我们不需要编写程序来测试我们提出的每个建议。论坛不是一个代码工厂。我们不会因为编写代码而获得报酬。我已经回答了数千个问题,并接受了数千个答案,所以我想我明白了接受答案的必要性。正如我已经说过的,OP理解这一建议,并能够实施这一建议。