如何获取Jtable或获取当前选项卡的jTable模型?

时间:2013-07-04 16:59:38

标签: java swing jtable jtabbedpane defaultlistmodel

无论如何,我可以从选中的标签面板中获取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的模型”

1 个答案:

答案 0 :(得分: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);
}