gpt4 book ai didi

java - JTable 在 setBackground() 上指定列号和行号

转载 作者:行者123 更新时间:2023-12-02 03:24:55 27 4
gpt4 key购买 nike

我最近了解到我可以为 JTable 创建自定义 DefaultTableCellRenderer 类。

但是,我的代码只为整行着色,而不是我想要根据条件着色的特定列/单元格。

如何在我创建的 DefaultTableCellRenderer 类中指定行和列?

这是我创建的类。

public class Schedule extends JPanel(){
public Schedule(){
schedulesJtbl.setDefaultRenderer(Object.class, new ScheduleTableCellRenderer());

int startTime = 1230, endTime = 1330;
int jtStartTime = scheduleJtbl.getValueAt(0,1);
int jtEndTime = scheduleJtbl.getValueAt(0,2);
int conflictCheck = 0;

// duplicate startTime and endTime
if((startTime == jtStartTime) && (endTime == jtEndTime)){
conflictCheck++
ScheduleTableCellRenderer.setConflict(conflictCheck);
}
//duplicate startTime
else if(startTime == jtStartTime){
conflictCheck++
ScheduleTableCellRenderer.setConflict(conflictCheck);
}
}

这是 ScheduleTableCellRenderer

public class ScheduleTableCellRenderer extends DefaultTableCellRenderer {

static int conflict = 0;

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

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

if (conflict > 0) {
c.setBackground(Color.RED);
} else if (conflict == 0) {
c.setBackground(Color.GREEN);
}

return c;
}

public static void setConflict(int aConflict) {
conflict = aConflict;
}

}

如果只是重复的 startTime(作为 if 的第二个条件),我如何才能只为第 2 列着色而不是整行着色,就像我的 JTable 上现在发生的情况一样。

enter image description here

希望你能帮助我。

谢谢。

最佳答案

schedulesJtbl.setDefaultRenderer(Object.class, new ScheduleTableCellRenderer());

这为任何行/列中的所有对象设置默认渲染器。

要为特定列设置渲染器,请执行以下操作:

table.getColumnModel().getColumn(???).setCellRenderer( ... );

您还需要重置默认背景:

if (conflict > 0) {
c.setBackground(Color.RED);
} else if (conflict == 0) {
c.setBackground(Color.GREEN);
} else {
c.setBackgrund( table.getBackground() );
}

关于java - JTable 在 setBackground() 上指定列号和行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086766/

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