我有一个JFrame,其中有多个类似宽度的JPanel,一个在另一个下面。我使用其中一个JPanel来显示JTable,这是该批次的最后一个JPanel。这个JPanel有一个JScrollpane作为子组件。这是我尝试动态添加表格的地方。此JScrollpane的初始高度设置为40。
我使用Netbeans 6.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();
表格显示,但表格高度不会根据行数进行更改。它保持默认值。我一直在尝试验证和重绘的许多组合,但没有任何效果。 (更多绝望)
任何人都可以对此有所了解 谢谢
答案 0 :(得分:1)
为什么要创建一个面板来保存滚动窗格。将滚动窗格直接添加到主面板。将滚动窗格的首选大小设置为所需的大小。然后使用
mainPanel.revalidate();
或者您可能需要使用frame.pack()来重置搜索对话框的大小。
无论如何,假设您在主面板上使用了正确的布局管理器,一切都应该有效。
答案 1 :(得分:0)