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 ヘッダーを取得しています。しかし、私が必要とするのは、コンポーネントの結果として 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 に答える