0

私は、同じ幅の複数のJPanelが上下に並んだJFrameを持っています。これらのJPanelの1つを使用して、ロットの最後のJPanelであるJTableを表示します。このJPanelには、子コンポーネントとしてJScrollpaneがあります。ここで、テーブルを動的に追加しようとします。このJScrollpaneの初期の高さは40に設定されています。

Netbeans6.8を使用して上記のテンプレートを設計しました

今、私はテーブルをJPanelに追加しようとしています。下のボタンが押されると、コードスニペットが呼び出されます。このコードを含むクラスは、javax.swing.JFrameクラスを拡張します。

以下のコードは、行数に応じてテーブルの高さを調整し、テーブルを表示することを期待しています。

SearchTable = new JTable(RowData, DisplayNames) {

        @Override
        public boolean isCellEditable(int rowIndex, int vColIndex) {
            return false;
        }
    };

    // if row count is less than 10 then display all the rows without a scroll bar
    if (SearchTable.getRowCount() < 10) {
        pnl_tblpanel.setPreferredSize(new Dimension(625, SearchTable.getRowHeight() * (SearchTable.getRowCount() + 4)));
        scr_tblholder.setPreferredSize(new Dimension(625, SearchTable.getRowHeight() * (SearchTable.getRowCount() + 4)));
    } else {// if row count is more than 10 display first 10 rows and add a scroll bar
        pnl_tblpanel.setPreferredSize(new Dimension(625, SearchTable.getRowHeight() * (10 + 2)));
        scr_tblholder.setAutoscrolls(true);
    }


    //pnl_tblpanel.add(scr_tblholder);
    scr_tblholder.setViewportView(SearchTable);
    //pnl_tblpanel.repaint();
    pnl_tblpanel.validate();

    this.validate();
    //this.repaint();
    pnl_tblpanel.setVisible(true);
    this.pack();

テーブルは表示されますが、テーブルの高さは行数に応じて変更されません。デフォルト値のままです。検証と再描画の多くの組み合わせを試しましたが、何も機能しませんでした。(もっと必死に)

誰かがこれに光を当てることができますかありがとう

4

2 に答える 2

1

スクロールペインを保持するためだけにパネルを作成したのはなぜですか。スクロールペインをメインパネルに直接追加します。スクロールペインの希望のサイズを希望のサイズに設定します。次に、

mainPanel.revalidate();

または、frame.pack()を使用して検索ダイアログのサイズをリセットする必要があるかもしれません。

とにかく、メインパネルで適切なレイアウトマネージャーを使用すると仮定すると、すべてが機能するはずです。

于 2010-05-14T15:28:40.240 に答える
0

setRowHeight http://java.sun.com/javase/6/docs/api/javax/swing/JTable.html#setRowHeight(int)を呼び出します

于 2010-05-14T15:43:29.990 に答える