gpt4 book ai didi

java - 更改 JTable 中某些行的颜色但不是全部

转载 作者:行者123 更新时间:2023-11-30 05:52:26 26 4
gpt4 key购买 nike

我创建了一个自定义单元格渲染器类来实现这一点。

public class MatchTableCellRenderer extends DefaultTableCellRenderer{


public Component getTableCellRendererComponent (JTable table,
Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell;
cell = super.getTableCellRendererComponent(
table, obj, isSelected, hasFocus, row, column);
if( ((String[]) ((MatchTableModel) table.getModel()).getRow(row)).length==7 ){
System.out.println(((String[]) ((MatchTableModel) table.getModel()).getRow(row))[0]+" "+((String[]) ((MatchTableModel) table.getModel()).getRow(row))[6]);

cell.setForeground(Color.green);

}
return cell;
}


}

并且我已将此渲染器设置为由我的表的列使用:

    tempColumn = table.getColumnModel().getColumn(0);
tempColumn.setCellEditor(new MacColumnEditor());
tempColumn.setCellRenderer(new MatchTableCellRenderer());

tempColumn = table.getColumnModel().getColumn(1);
tempColumn.setCellEditor(new IpColumnEditor());
tempColumn.setCellRenderer(new MatchTableCellRenderer());

tempColumn = table.getColumnModel().getColumn(2);
DefaultCellEditor dfEditor=new DefaultCellEditor(new JTextField());
dfEditor.setClickCountToStart(2);
tempColumn.setCellEditor(dfEditor);
tempColumn.setCellRenderer(new MatchTableCellRenderer());

我想要包含长度为 7 绿色的 String[] 的行,而其他行具有默认颜色。但有趣的是,我所有的行都变成了绿色。如您所见,我有一条打印线。它打印了 4 次(我的表格有 12 行),但所有行都变成了绿色,而不是 4 行。我做错了什么?

最佳答案

原因是 DefaultTableCellEditor 臭名昭著的颜色内存 (TM):您必须始终设置颜色,而不是只在一个分支中设置。

if (myCondition) {
setBackground(...) {
} else {
setBackground(...)
}

确切的细节在 recent thread 中解释。

关于java - 更改 JTable 中某些行的颜色但不是全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11684386/

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