У меня есть JFrame с несколькими JPanel одинаковой ширины, выровненными один под другим. Я использую один из этих JPanels для отображения 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();
Таблица отображается, но высота таблицы не изменяется в зависимости от количества строк. Это остается его значением по умолчанию. Я пробовал много комбинаций проверки и перекраски, но ничего не получалось. (Больше в отчаянии)
Может кто-нибудь пролить свет на это
Спасибо