通过使用DefaultTableRenderer
JSpinner
和JComboBox
的{{1}}时出现问题>
我创建了一个简单的DefaultCellEditors
,用于检查是否存在重复时间或无效时间值,如下所示。
DefaultTableRenderer
如果用户选择与其他人重复或冲突的时间,我希望将行着色为红色。 在用户选择时间并移至下一列后,必须进行行颜色的渲染或更改。
如果 startTime 等于 endTime ,我尝试重新应用DefaultRenderer来刷新行颜色,但它不起作用。我想我做错了。
我试图重新应用我在JSpinner状态发生变化但没有运气时创建的渲染器。
public class ScheduleTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int col) {
Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
Object startTimeValue = table.getModel().getValueAt(row, 1);
Object endTimeValue = table.getModel().getValueAt(row,2);
if(startTimeValue!= null && endTimeValue != null &&
startTimeValue.toString().equals(endTimeValue.toString()) ){
System.out.print("Start Time: "+startTimeValue+", ");
System.out.println(endTimeValue+"\n");
cellComponent.setBackground(Color.RED);
((JLabel)cellComponent).setForeground(Color.WHITE);
}
if(row%2 == 0){
cellComponent.setBackground(Color.CYAN);
((JLabel)cellComponent).setForeground(Color.BLACK);
}
else{
cellComponent.setBackground(Color.WHITE);
((JLabel)cellComponent).setForeground(Color.BLACK);
}
return cellComponent;
}
}
我能做到这一点的最简单方法是什么。
我很感激任何帮助。
谢谢。