无论是通过鼠标还是键盘选择单元格,我都想更改单元格的边框。在网上很难找到。我尝试使用 ListSelectionListener 但这不起作用。
如果您知道一些更改单元格边框的好方法,请回复。我欢迎任何想法。
谢谢!
无论是通过鼠标还是键盘选择单元格,我都想更改单元格的边框。在网上很难找到。我尝试使用 ListSelectionListener 但这不起作用。
如果您知道一些更改单元格边框的好方法,请回复。我欢迎任何想法。
谢谢!
选择单元格时,使用自定义的 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() 版本的getTableCellRendererComponent
first 并更改单元格颜色。
这是默认行为。单元格边框是根据Table.focusCellHighlightBorder
表格的属性设置的。因此,您可以使用 UIManager 更改默认边框。有关更多信息,请参阅UIManager 默认值。
如果由于某种原因这不符合您的要求,那么我会查看Table Row Renderering,它允许您在一个地方执行此操作,而不是为表中的每种数据类型创建自定义渲染器。