gpt4 book ai didi

java - 如何在窗口大小调整时保持 JTable 自定义渲染器的外观?

转载 作者:行者123 更新时间:2023-12-01 06:49:29 24 4
gpt4 key购买 nike

我的 Java 应用程序中有一个 JTable,并应用了一个自定义渲染器来更改表​​最后一行的背景颜色。像这样:

enter image description here

我通过自定义渲染器的以下代码实现了这一点:

table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int col) {

super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, col);

String status = (String)table.getModel().getValueAt(row, 0);
if ("Total".equals(status)) {
setBackground(Color.GRAY);
setForeground(Color.WHITE);
}

this.setHorizontalAlignment(CENTER);
return this;
}
});

但是,当我调整窗口大小时,它看起来像这样:

enter image description here

要使其恢复正常,我必须清除表格并再次添加项目,为了在调整大小时保持表格外观,我应该做什么?谢谢。

最佳答案

您忘记了用于设置颜色的 else block :

if ("Total".equals(status)) {
setBackground(Color.GRAY);
setForeground(Color.WHITE);
} else {
// set colors back to the default settings
setBackground(null);
setForeground(null);
}

否则渲染器将保持“设置”并将所有单元格着色为灰色/白色。将渲染器想象成橡皮图章,用于印出许多相同的东西。如果您更改了它的颜色并且没有将其更改回来,则图章将“卡在”颜色模式中。

关于java - 如何在窗口大小调整时保持 JTable 自定义渲染器的外观?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44619637/

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