簡體   English   中英

JTable中的選定行未突出顯示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM