我有一个JTable
在Java Swing应用程序中显示一些记录。用户只能使用整行,而不能使用单个单元格。有什么方法可以专注于JTable
的整行吗?默认设置是仅关注用户单击的单元格。我使用不同的颜色作为焦点,因此如果只聚焦一个单元而不是整行,它看起来不太好。
更新:这是我的自定义TableCellRenderer
的当前代码,问题是当一行有焦点并用“焦点”颜色绘制,然后是{{ 1}}失去焦点,只有具有焦点的单元格被重新绘制为“选定”颜色,但所选行中的所有单元格都应使用“选定”颜色重新绘制。
JTable
答案 0 :(得分:2)
听起来好像在寻找the setRowSelectionAllowed()
method。
既然你说只是改变颜色就足够了,你可能想看一下Swing Tutorial的custom cell renderer section。您只需设置逻辑以检查给定单元格是否在选定行中,并相应地绘制背景颜色。
答案 1 :(得分:1)
第一个想法就像是
JTable jTable = new JTable() {
public TableCellRenderer getCellRenderer(int row, int column) {
final TableCellRenderer superRenderer = super.getCellRenderer(row, column);
return new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object object, boolean isSelected, boolean hasFocus, int row, int column) {
// determine focus on row attribute only
hasFocus = hasFocus() && isEnabled() && getSelectionModel().getLeadSelectionIndex() == row;
return superRenderer.getTableCellRendererComponent(table, object, isSelected, hasFocus, row, column);
}
};
}
};
我使用自己的逻辑来确定仅基于行属性的焦点。它使用底层的单元格渲染器,但如果使用焦点边框则看起来很奇怪。