Adding a JScrollPane component to a JTable column

◇◆丶佛笑我妖孽 提交于 2019-12-01 20:53:21

With TableCellRenderer it's not possible to add any scrolling behaviour, as it does not receive any events and only draws the component. It is possible - however - to accomplish this by using a custom TableCellEditor with getTableCellEditor being:

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;
}

Additionally, you have to control the editing behaviour of your CellEditor. To make the cell editable and scrollable always, isCellEditable should look like this:

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

Personally, I find this solution to be more of a hack than anything, though. Also, this should only be for testing. You really do have to implement a better editing behaviour in my opinion.

A Renderer just paints the cells. I believe you need to implement a TableCellEditor to scroll.

As an alternative, consider placing a single scroll pane in a separate container and updating it's view in your selection listener.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!