gpt4 book ai didi

java - 在 JTable 中禁用单元格轮廓

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:13 25 4
gpt4 key购买 nike

我正在使用 JTable 来显示一些数据。用户只能选择 JTable 的整行,而不是单个单元格。这是用于仅允许行选择的代码:

jTable1.setCellSelectionEnabled(false);
jTable1.setColumnSelectionEnabled(false);
jTable1.setRowSelectionAllowed(true);
jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);

但是当用户选择一行时,该行中的单元格会被勾勒出来(下图中的第一列/最后一行):

enter image description here

如何禁用此大纲?

最佳答案

您可以简单地扩展 DefaultTableCellRenderer 并从 UI 方面假装单元格没有“聚焦”。

我使用以下渲染器删除了边框:

private static class BorderLessTableCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 1L;

public Component getTableCellRendererComponent(
final JTable table,
final Object value,
final boolean isSelected,
final boolean hasFocus,
final int row,
final int col) {

final boolean showFocusedCellBorder = false; // change this to see the behavior change

final Component c = super.getTableCellRendererComponent(
table,
value,
isSelected,
showFocusedCellBorder && hasFocus, // shall obviously always evaluate to false in this example
row,
col
);
return c;
}
}

您可以像这样在 JTable 上设置它:

table.setDefaultRenderer( Object.class, new BorderLessTableCellRenderer() );

或者,对于字符串:

table.setDefaultRenderer( String.class, new BorderLessTableCellRenderer() );

这有点 hack,因为它只是重复使用原始渲染器并假装聚焦/选定的单元格不是,但它应该让您开始。

关于java - 在 JTable 中禁用单元格轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com