私は、同じ幅の複数の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();
テーブルは表示されますが、テーブルの高さは行数に応じて変更されません。デフォルト値のままです。検証と再描画の多くの組み合わせを試しましたが、何も機能しませんでした。(もっと必死に)
誰かがこれに光を当てることができますかありがとう