我是否可以从所选的选项卡面板中获取Jtable。
我使用以下代码为所选的每个选项卡动态创建表格:
JScrollPane panel2 = new JScrollPane();
panel2.setName(tabidis);
chattable = new JTable();
chattable.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {},new String [] {"Messages"}));
panel2.setViewportView(chattable);
chattable.setShowGrid(false);
jTabbedPane1.add(username4, panel2);
//I am using GUI environment in netbeans.
我认为层次结构如下:
JTabbedPanel1>>JscrollPAnel1>>Jtable1
通过使用以下代码:
((JTable)jTabbedPane1.getSelectedComponent().getComponentAt(1,1).getComponent At(0,0)).getName();
我得到的错误是"javax.swing.table.JTableHeader不能转换为javax.swin.JTable"
这意味着我将获得jTableHeader作为组件。但我需要的是将JTable作为组件的结果,以便从中获得模型
或者更简单地说,"是否可以在所选选项卡中获得JTable的模型"
这似乎有效:
@Test
public void test() {
// original components
JTable jTable = new JTable();
JScrollPane scrollPane = new JScrollPane(jTable);
// add them to tab
JTabbedPane jTabbedPane = new JTabbedPane();
jTabbedPane.addTab("tab1", scrollPane);
jTabbedPane.setSelectedComponent(scrollPane);
// get them out of selected tab
JScrollPane scrollRef = (JScrollPane) jTabbedPane.getSelectedComponent();
JTable tableRef = (JTable) scrollRef.getViewport().getComponents()[0];
assertTrue(tableRef == jTable);
}