ここJTable
に 2 つの列があります。右側の列は編集可能な列ですが、もう一方の列は編集できません。
だから、私の問題は、ユーザーがセルの値を変更するたびに、その特定のセルがセルの色を変更することです。
ユーザーがテーブルに変更を加えたことをユーザーに知らせたいので、これを行いたいと思います。
私はこれをどこかで見つけて、どうにかして問題を解決しましたが、値を変更して別のセルをクリックすると、色が元の色に戻るという期待に至らなかったことが 1 つあります。保存されるまでそのままにしておきたいです。
@Override
public Component prepareEditor(TableCellEditor editor, int data, int columns) {
Component c = super.prepareEditor(editor, data, columns);
c.setBackground(Color.RED);
return c;
}
出来ますか?はいの場合、いくつかの例を示してください。
アップデート:
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);