1. 程式人生 > >jTable設定單個單元格顏色

jTable設定單個單元格顏色

        嘗試Swing已經一星期,感覺Swing裡的坑還是很多的,對於我這種剛入門的新手來說,介面確實有些不順手。

        閒話休提。需求是這樣的,繪製一個數據表格,假如其中某個單元格的資料超出閾值,該單元格標紅。

        在Swing的庫裡簡略地翻了一陣子的結果是,暫時沒找到現成的、設定單個單元格樣式的介面,為了設定單個單元格的顏色,需要過載jTable物件中的prepareRenderer函式,根據單元格的行號和列號,設定對應的單元格。

        在這邊貼出程式碼,這段程式碼設定了第2行第2列的那個單元格為紅色,而其餘單元格樣式保持不變。

String[][] display = {{"a", "b"}, {"c", "d"}};
javax.swing.JTable jTable = new javax.swing.JTable(display, new String[] { "Column1", "Column2"})  
{
    @Override
    public java.awt.Component prepareRenderer(javax.swing.table.TableCellRenderer renderer, int row, int column) {  
        int modelRow = convertRowIndexToModel(row);  
        int modelColumn = convertColumnIndexToModel(column);  
        java.awt.Component comp = super.prepareRenderer(renderer, row, column);  
        if (!isRowSelected(modelRow)) {
                if (modelRow == 1 && modelColumn == 1)                   //此處加入條件判斷
                    comp.setBackground(java.awt.Color.RED);
                else                                                     //不符合條件的保持原表格樣式
                   comp.setBackground(generalTable.getBackground());
        }
        return comp;
    }
};

參考資料

        對新手來說萬能的StackFlow。。看看以前別人提的問題相當有意思,而且只要是基礎性的問題,一旦post上去簡直就是秒答。。

        PS:很多天見不到谷歌娘本尊,已經沒有生活的動力了_(:з」∠)_