JTable 不显示
JTable doesnt show
首先我创建了 JSplitPane:
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT ,new JScrollPane(textArea), new JScrollPane(table));
add(splitPane);//added to frame
然后我用默认模型创建了 table:
DefaultTableModel model = new DefaultTableModel(columns, 0);
JTable table = new JTable(model);
其中我将这些值设置为列数组: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 正确显示,但 table 不正确。
我不知道我做错了什么,我一直在关注这个教程https://docs.oracle.com/javase/tutorial/uiswing/components/table.html
但没用。
P.S。如果我在 splitPane 初始化后立即设置 table = new JTable(10,10)
,它会在拆分窗格中正常显示。
当您将 table 变量添加到拆分窗格时,它为空。所以没有组件被添加到拆分窗格中。
您以后无法创建 JTable 的实例。当然,变量 "table" 现在可能包含对 JTable 的引用,但您实际上并未将 table 添加到拆分窗格。
您只能在创建 JTable 后将 table 添加到拆分窗格。
所以代码必须是这样的:
table = new JTable(column, 0);
JSplitPane splitPane = new JSplitPane(... , new JScrollPane(textArea), new JScrollPane(table));
稍后在您的代码中您可以使用:
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow( ... );
首先我创建了 JSplitPane:
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT ,new JScrollPane(textArea), new JScrollPane(table));
add(splitPane);//added to frame
然后我用默认模型创建了 table:
DefaultTableModel model = new DefaultTableModel(columns, 0);
JTable table = new JTable(model);
其中我将这些值设置为列数组: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 正确显示,但 table 不正确。
我不知道我做错了什么,我一直在关注这个教程https://docs.oracle.com/javase/tutorial/uiswing/components/table.html 但没用。
P.S。如果我在 splitPane 初始化后立即设置 table = new JTable(10,10)
,它会在拆分窗格中正常显示。
当您将 table 变量添加到拆分窗格时,它为空。所以没有组件被添加到拆分窗格中。
您以后无法创建 JTable 的实例。当然,变量 "table" 现在可能包含对 JTable 的引用,但您实际上并未将 table 添加到拆分窗格。
您只能在创建 JTable 后将 table 添加到拆分窗格。
所以代码必须是这样的:
table = new JTable(column, 0);
JSplitPane splitPane = new JSplitPane(... , new JScrollPane(textArea), new JScrollPane(table));
稍后在您的代码中您可以使用:
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow( ... );