2017-09-04 132 views
0

首先我已经创建调整JSplitPane:JTable的犯规显示

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); 

其中i的设定这些值作为式柱阵列: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 但它does not帮助。

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

回答

1

将表格添加到拆分窗格时,表格变量为空。所以没有组件被添加到分割窗格中。

您以后不能再创建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(...);