[英]Selected row in JTable is not highlighting
好吧,這是我在這里的第一篇文章。 但是我有點沮喪,因為我到處都有搜索,但是什么都沒用。 我有JTable
並且代碼在if( value.equals("CMAU1294522")
)之后value.equals("CMAU1294522")
在下面的行中工作,但是只有一個單元格顯示方形框。 我用鼠標單擊了特定的行,我希望整行顯示為淺灰色(我認為這是標准的)。
table = new JTable(sorter) {
public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
Component comp = super.prepareRenderer(renderer, row, col);
Object value = getModel().getValueAt(row, col);
UIManager.put("Table.editRow", new javax.swing.plaf.ColorUIResource(Color.YELLOW));
if(editingRow ==1){
table.setSelectionBackground(Color.red);
}
if (getSelectedRow() == row) {
table.setSelectionBackground(Color.red);
}
if (value.equals("CMAU1294522")) {
comp.setBackground(Color.red);
} else if (value.equals("PNCT")) {
comp.setBackground(Color.green);
} else if (NewJApplet.contReady.containsKey(value)) {
comp.setBackground(Color.CYAN);
} else if (NewJApplet.badCont.containsKey(value)) {
comp.setBackground(Color.red);
} else {
comp.setBackground(Color.white);
}
return comp;
}
在我已經擁有的prepareRenderer
函數中,有什么辦法可以做到?
我有什么辦法可以在已經擁有的PreparRenerere函數中進行操作嗎?
您編寫的代碼獲取“值”是錯誤的。 您總是會得到當前正在渲染的單元格的值。 如果要基於特定值突出顯示整個行,則需要對列進行硬編碼:
Object value = getModel().getValueAt(row, ???);
另外,看起來您正在對表中的數據進行排序,因此您應該使用getValueAt(...)而不是getModel()。getValueAt(),以便檢查排序表中的數據,而不是未排序的數據模型。
請查看“ 表行渲染”中的示例代碼以獲取可用示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.