-1
我讀了以下部分:變回默認的背景色DefaultTableCellRenderer
所以我決定寫我自己的自定義渲染:
public class MyRenderer extends DefaultTableCellRenderer {
@Override
protected void setValue(Object value) {
try {
String text = MyFormatter.format(value);
//setBackground(Color.white); // my text becomes invisible
//setBackground(null); // my text becomes invisible
setBackground(???);
setText(text);
} catch (IllegalArgumentException e) {
// Something is not quite right, indicate the error to the user:
setBackground(Color.red); // at this point in time getBackground() returns Color.blue
super.setValue(value);
}
}
}
我瞭解如何更改背景顏色以指示格式中出現錯誤的字段。在用戶手動編輯後,我希望該字段恢復爲原始背景顏色。但到目前爲止,我還沒有明白如何去做。在這種情況下,我可以使用DefaultTableCellRenderer
嗎?我應該改用TableCellRenderer .getTableCellRendererComponent
嗎?
我能得到的東西,以顯示與:
[...]
String text = MyFormatter.format(value);
setBackground(null);
setForeground(null); // need both to null
setText(text);
但這種選擇行下破壞影像逆模式......
更新:我不能使用getBackground()
和存儲在編輯背景色時,私人會員中的顏色值爲Color.blue
。
'setBackground(null);'* should * work –
我不理解這個問題。難道你不能保持對初始顏色的引用(在改變之前使用'getBackground()',以保持引用),那麼在你需要將顏色還原爲原始顏色時,請使用該引用? –
再次'setBackground(null);'* should *工作。如果它不工作,那麼請發佈你的[mcve]程序代碼,以便我們可以測試你自己的代碼。 –