无论是鼠标还是键盘,无论何时选择单元格,我都希望更改单元格的边框。 在网上很难找到smth。我尝试使用ListSelectionListener,但这不起作用。
如果您知道改变小区边界的好方法,请回复。 我欢迎任何想法。
谢谢!
答案 0 :(得分: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
并首先调用getTableCellRendererComponent
的super()版本,然后只更改单元格颜色。
答案 1 :(得分:2)
这是默认行为。单元格边框基于表的Table.focusCellHighlightBorder
属性设置。因此,您可以使用UIManager更改默认边框。有关详细信息,请参阅UIManager Defaults。
如果由于某种原因这不符合您的要求,那么我会查看Table Row Renderering,这样您就可以在一个地方执行此操作,而不是为表中的每种数据类型创建自定义渲染器。