Добавление компонента JScrollPane в столбец JTable - PullRequest
3 голосов
/ 17 июня 2011

Я пытаюсь добавить возможности прокрутки к определенному столбцу в моей JTable. Я реализовал пользовательский компонент TableCellRenderer, и я прекрасно вижу область прокрутки внутри таблицы, но я не могу ее прокрутить. Я также пытался реализовать TableCellEditor, но безуспешно.

    public Component getTableCellEditorComponent(JTable arg0, Object arg1,
        boolean arg2, int arg3, int arg4) {
    return scrollPane;
}

У кого-нибудь есть идеи, как сделать те ячейки, которые содержат прокручиваемую область прокрутки?

Ответы [ 3 ]

5 голосов
/ 17 июня 2011

В TableCellRenderer невозможно добавить какое-либо поведение прокрутки, поскольку он не получает никаких событий и только рисует компонент. Это возможно - однако - сделать это, используя пользовательский TableCellEditor с getTableCellEditor , равным:

public Component getTableCellEditorComponent(JTable table, Object value, boolean   isSelected, int row, int column) {
    JTextArea area = new JTextArea();
    area.setLineWrap(true);
    area.setText((String) value);

    JScrollPane pane = new JScrollPane(area);

    return pane;
}

Кроме того, вы должны контролировать режим редактирования вашего CellEditor. Чтобы сделать ячейку редактируемой и прокручиваемой всегда, isCellEditable должен выглядеть следующим образом:

public boolean isCellEditable(EventObject anEvent) {
    return true;
}

Лично я нахожу, что это решение скорее взломать, чем что-либо еще. Кроме того, это должно быть только для тестирования. Вы действительно должны реализовать лучшее поведение редактирования, на мой взгляд.

2 голосов
/ 17 июня 2011

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

2 голосов
/ 17 июня 2011

Рендерер просто рисует клетки.Я полагаю, что вам нужно реализовать TableCellEditor для прокрутки.

...