我试图通过JTable
的行和列迭代后显示数组的内容。我尝试了Arrays.toString(myTwoDimensionalArrayVariable)
,但它不会显示字符串值。
我的目标是检查目的地 JTable
的每行每列的重复,当用户试图从源 JTable
添加行值,这就是为什么我想显示数组的内容。
列上的值为double
、String
、int
的组合。
int myRowCount = aJTableParameter.getRowCount();
int myColumnCount = aJTableParameter.getColumnCount();
Object[][] myRowValues = new Object[myRowCount][myColumnCount];
for (int j = 0; j < myRowCount; j++) {
for(int i = 0; i< myColumnCount; i++){
myRowValues[j][i] = aDestinationTable.getValueAt(j, i);
}
}
System.out.println(Arrays.toString(myRowValues));
if (Arrays.asList(myRowValues).contains(column1Value)
&& Arrays.asList(myRowValues).contains(column2Value)
&& Arrays.asList(myRowValues).contains(column3Value)
&& Arrays.asList(myRowValues).contains(column4Value)) {
JOptionPane.showMessageDialog(null, "Duplicate, try again.");
}else{
//do something else
}
我只得到这个输出:
run:
Successfully recorded login timestamp
[]
[[Ljava.lang.Object;@35fa3ff2]
[[Ljava.lang.Object;@407c448d, [Ljava.lang.Object;@1e78a60e]
除了使用二维数组还有其他的选择吗?
我很感激你的帮助。
谢谢。
如果JTable单元格只包含字符串,则可以将数组定义为
String[][]
而不是Object[][]
,并使用aDestinationTable.getValueAt(j, i).toString()
填充JTable内容。
编辑:既然不是这样(根据你的评论),可能最好使用列表,像这样:
List<List<Object>> objectList = new ArrayList<>();
for (int j = 0; j < 2; j++) {
objectList.add(j, new ArrayList<>());
for (int i = 0; i < 2; i++) {
if (i==0) objectList.get(j).add("string" + j + i);
if (i==1) objectList.get(j).add((double) 37.8346 * j * i);
}
}
System.out.println("OBJECT LIST: "+objectList);
输出:OBJECT LIST: [[string00, 0.0], [string10, 37.8346]]
你的代码应该是这样的:
List<List<Object>> myRowValues = new ArrayList<>();
for (int j = 0; j < myRowCount; j++) {
myRowValues.add(j, new ArrayList<>());
for (int i = 0; i < myColumnCount; i++) {
myRowValues.get(j).add(aDestinationTable.getValueAt(j, i));
}
}
System.out.println(myRowValues);