我在使用存储在字符串中的值填充JTable时遇到问题。
字符串的格式为:
String factor = {"UMIN2\nT_UMIN2\nUMIN1\nT_UMIN1\nUMAX1\nT_UMAX1\nUMAX2\nT_UMAX2"};
,Jtable的代码如下:
int len = factor.split("[\n\r]").length;
final String[] columnNames = {"Factor", "Tol, min", "Exp, min", "Exp, max", "Tol, max", "Test 1", "Test 2", "Test 3", "Test 4", "Test 5", "Test 6", "Test 7", "Test 8", "Test 9", "Test 10"};
final Object[][] data = {{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}, };
model = new DefaultTableModel(data, columnNames);
model.setRowCount(len);
table = new JTable(data, columnNames);
table.setModel(model);
for(int x = 0; x < len; x++) table.setValueAt(factor,x,0);
JTableHeader header = table.getTableHeader();
header.setFont(new Font("Times New Roman", Font.BOLD, 13));
header.setBackground(Color.black);
header.setForeground(Color.white);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setSize(988, 618);
scrollPane.setFont(new Font("Times New Roman", Font.BOLD, 13));
scrollPane.setLocation(10, 60);
getContentPane().add(scrollPane);
我得到的是:
[ **factor** ]
[ UMIN2T_... ]
[ UMIN2T_... ]
[ UMIN2T_... ]
[ UMIN2T_... ]
[ UMIN2T_... ]
[ UMIN2T_... ]
[ UMIN2T_... ]
[ UMIN2T_... ]
然而,我正在寻找的是每个新行条目都有自己的框,所以我看起来像:
[ **factor** ]
[ UMIN2 ]
[ T_UMIN2]
[ UMIN1 ]
[ T_UMIN1]
[ UMAX1 ]
[ T_UMAX1]
[ UMAX2 ]
[ T_UMAX2]
现在我正在使用setValueAt函数。
我也尝试改变盒子的高度,并且只有一个dox中的所有数据,但是,这很好,我需要单独的盒子,因为我以后必须根据表格中的其他数据对它们进行着色。 / p>
感谢您的帮助。
答案 0 :(得分:2)
您必须拆分因子并将每个标记设置为每一行。
int row = 0;
for (StringTokenizer stringTokenizer = new StringTokenizer(factor, "\n"); stringTokenizer.hasMoreTokens();) {
String token = stringTokenizer.nextToken();
table.setValueAt(token, row++, 0);
}