jTable設定單個單元格顏色
阿新 • • 發佈:2019-02-02
嘗試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:很多天見不到谷歌娘本尊,已經沒有生活的動力了_(:з」∠)_