0

无论是通过鼠标还是键盘选择单元格,我都想更改单元格的边框。在网上很难找到。我尝试使用 ListSelectionListener 但这不起作用。

如果您知道一些更改单元格边框的好方法,请回复。我欢迎任何想法。

谢谢!

4

2 回答 2

3

选择单元格时,使用自定义的 TableCellRenderer 执行不同的操作。

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#renderer

查看上面示例中的代码,您可以了解如何查看isSelected布尔参数。

 public Component getTableCellRendererComponent(
                        JTable table, Object color,
                        boolean isSelected, boolean hasFocus,
                        int row, int column) {
    Color newColor = (Color)color;
    setBackground(newColor);
    if (isBordered) {
        if (isSelected) {
            ...
            //selectedBorder is a solid border in the color
            //table.getSelectionBackground().
            setBorder(selectedBorder);
        } else {
            ...
            //unselectedBorder is a solid border in the color
            //table.getBackground().
            setBorder(unselectedBorder);
        }
    }

但是,在您的实现中,只需扩展DefaultTableCellRenderer并调用 super() 版本的getTableCellRendererComponentfirst 并更改单元格颜色。

于 2013-11-08T16:11:28.520 回答
2

这是默认行为。单元格边框是根据Table.focusCellHighlightBorder表格的属性设置的。因此,您可以使用 UIManager 更改默认边框。有关更多信息,请参阅UIManager 默认值。

如果由于某种原因这不符合您的要求,那么我会查看Table Row Renderering,它允许您在一个地方执行此操作,而不是为表中的每种数据类型创建自定义渲染器。

于 2013-11-08T16:16:04.997 回答