0

无论如何我可以从选择的选项卡式面板中获取 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).getComponentAt(0,0)).getName();

我收到“javax.swing.table.JTableHeader 无法转换为 javax.swing.JTable”的错误

这意味着我将 jTable Header 作为组件。但我需要的是让 JTable 作为组件结果,以便从中获取模型。

或者更简单地说“无论如何要让所选选项卡中存在 JTable 的模型”

4

1 回答 1

3

这似乎有效:

@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);
}
于 2013-07-04T17:13:01.993 回答