Как я могу изменить высоту jtable во время выполнения - PullRequest
0 голосов
/ 14 мая 2010

У меня есть 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();

Таблица отображается, но высота таблицы не изменяется в зависимости от количества строк. Это остается его значением по умолчанию. Я пробовал много комбинаций проверки и перекраски, но ничего не получалось. (Больше в отчаянии)

Может кто-нибудь пролить свет на это Спасибо

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Почему вы создали панель только для удержания панели прокрутки. Добавьте полосу прокрутки прямо на главную панель. Установите желаемый размер панели прокрутки на нужный вам размер. Тогда используйте

mainPanel.revalidate ();

Или, может быть, вам нужно использовать frame.pack () для сброса размера диалогового окна поиска.

В любом случае, при условии, что вы используете правильный менеджер раскладки на главной панели, все должно работать.

0 голосов
/ 14 мая 2010
...