gpt4 book ai didi

java - 在 JTable 中绘制行

转载 作者:行者123 更新时间:2023-11-29 04:04:21 24 4
gpt4 key购买 nike

我有一个 DefaultTableCellRenderer 的实现。当有人在表中选择一行时,该行会突出显示为绿色。如果我想突出显示所选行下的行,最简单的方法是什么?这是否有可能无需重新呈现整个表格?

所以目前,我有一些看起来像这样的东西:

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
component.setBackground(Color.GREEN);

// Somewhere here I would like to retrieve the row below the current row and give it another color

} else {
component.setBackground(Color.WHITE);
}
return component;
}

最佳答案

稍微改变一下您的想法。您不需要选定行的渲染器来控制下面的行。您应该做什么让每一行检查并查看上面的行是否被选中,如果是,那么它会突出显示自己。

if (table.isRowSelected(row - 1)) {
// Highlight self.
component.setBackground(Color.YELLOW);
}

您可能还需要在选择更改时重新绘制突出显示的行。我怀疑 Java 只会重绘默认情况下已选择/取消选择的行,因此不会重绘下面的行。我当前的机器上没有 JDK,所以我无法测试,但如果是这样的话,那么像这样的东西应该可以解决问题:

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
table.repaint();
}
});

实际上,您可以更聪明,只重新绘制需要重新绘制的确切行。如果您愿意,我会将其留作练习(一项困难且不值得的练习)。

关于java - 在 JTable 中绘制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1066785/

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