JTable没有显示

时间:2017-09-04 02:29:09

标签: java swing jtable jsplitpane

首先我创建了JSplitPane:

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT ,new JScrollPane(textArea), new JScrollPane(table));
add(splitPane);//added to frame

然后我用默认模型创建了表:

DefaultTableModel model = new DefaultTableModel(columns, 0);
JTable table = new JTable(model);

其中我将这些值设置为colum array:A B C D E F P1 P2 R1 R2 R3 S1 S2

问题是我稍后在某些操作后(在动作侦听器中)尝试使用此代码添加数据:

model.addRow(parts);

其中的部分是(作为数组):

3.0 2.0 5.0 4.0 6.0 1.0 4.0 1.0 -4.0 -30.0 5.0 -1.0 -6.0  
6.0 1.0 3.0 2.0 5.0 4.0 0.5 -5.5 0.75 -38.5 7.0 1.5 -5.5 

textArea正确显示但表没有。

我不知道我做错了什么,我一直在关注这个教程https://docs.oracle.com/javase/tutorial/uiswing/components/table.html 但它没有帮助。

P.S。如果我在splitPane初始化之后设置table = new JTable(10,10),它通常会在拆分窗格中显示。

1 个答案:

答案 0 :(得分:1)

将表变量添加到拆分窗格时,该表变量为null。因此,没有任何组件添加到拆分窗格中。

稍后您无法创建JTable的实例。当然,变量“table”现在可能包含对JTable的引用,但您实际上并未将该表添加到拆分窗格中。

您只能在创建JTable后将表格添加到拆分窗格。

所以代码必须是这样的:

table = new JTable(column, 0);
JSplitPane splitPane = new JSplitPane(... , new JScrollPane(textArea), new JScrollPane(table));

然后在您的代码中,您可以使用:

DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow( ... );