我在这里有两列(JTable
)。右栏是可编辑的,而另一栏不是。JTable valuechanged然后更改单元格颜色
所以,我的问题是,无论何时用户更改单元格的值,该特定单元格将更改其单元格颜色。
我想这样做是因为我想让用户知道他/她在表格中进行了一些更改。
我发现这个地方,它以某种方式解决了我的问题,但有一件事没有出现我的期望是更改值并单击另一个单元格后,颜色变回原来的颜色。我想让它保持直到它被保存。
@Override
public Component prepareEditor(TableCellEditor editor, int data, int columns) {
Component c = super.prepareEditor(editor, data, columns);
c.setBackground(Color.RED);
return c;
}
这可能吗?如果是,请举例说明。
UPDATE:
String[] columnname = {"Student Name", "Grade"};
Object[][] data = {};
gradetable = new JTable(data, columnname){
private Object[][] rowData;
public boolean isCellEditable(int data, int columns){
return columns == 1;
}
public Component prepareRenderer(TableCellRenderer r, int data, int columns){
final Component c = super.prepareRenderer(r, data, columns);
if (data % 2 == 0){
c.setBackground(Color.LIGHT_GRAY);
}
else{
c.setBackground(Color.WHITE);
}
if (isCellSelected(data, columns)){
c.setBackground(Color.ORANGE);
}
return c;
}
@Override
public Component prepareEditor(TableCellEditor editor, int data, int columns) {
Component c = super.prepareEditor(editor, data, columns);
c.setBackground(Color.RED);
return c;
}
};
gradetable.setModel(new DefaultTableModel(data, columnname));
gradetable.setPreferredScrollableViewportSize(new Dimension (350, 130));
gradetable.setFillsViewportHeight(true);
gradetable.getTableHeader().setReorderingAllowed(false);
gradetable.setGridColor(new Color(128,128,128,128));
JScrollPane jsp = new JScrollPane(gradetable);
panel3.add(jsp);
嗨MadProgrammer,感谢您的答复。你能告诉我一个解决我的问题的示例程序吗? – 2013-03-08 06:19:25
当然,其链接的答案 – MadProgrammer 2013-03-08 06:27:02
谢谢。我会研究你给的答案。 – 2013-03-08 07:59:35