信息資料來源:http://www.diybl.com/course/3_program/java/javajs/2007923/73156.html
不過原作者的代碼並未實現其需求,在47、48行加上else cell.setBackground(Color.WHITE);即可正確實現。
修改后的完整代碼如下:
1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4 import javax.swing.table.*;
5
6 public class TestTableCellColor extends JFrame {
7 private String[] colname = {"第1列","第2列","第3列","第4列","第5列"}; //表頭信息
8 private String[][] data = new String[10][5]; //表內容
9
10 //界面組件----------------------//
11 private JScrollPane scroPanel = new JScrollPane(); //中底層滾動面板
12 private DefaultTableModel model; //列表默認TableModel
13 private JTable table;
14 int r=1, c=2;//用於控制變色區域
15
16 public TestTableCellColor() {
17 makeFace();
18 addListener();
19 showFace();
20 }
21
22 private void makeFace() {
23 //表內容數組 data[][] 賦值------------//
24 for(int i = 0; i < 10; i++) {
25 for(int j = 0; j < 5; j++) {
26 data[i][j] = "( " + (j+1) + ", " + (i+1) + " )";
27 }
28 }
29
30 table = new JTable(model = new DefaultTableModel(data,colname));
31 table.setEnabled(false);
32
33 //新建列表現器------------------------//
34 DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
35 public Component getTableCellRendererComponent(JTable table, Object value,
36 boolean isSelected, boolean hasFocus, int row, int column) {
37 Component cell = super.getTableCellRendererComponent
38 (table, value, isSelected, hasFocus, row, column);
39 if(row==r && column==c && cell.isBackgroundSet())//設置變色的單元格
40 cell.setBackground(Color.GRAY);
41 else
42 cell.setBackground(Color.WHITE);
43
44 return cell;
45 }
46 };
47
48 //設置列表現器------------------------//
49 for(int i = 0; i < colname.length; i++) {
50 table.getColumn(colname[i]).setCellRenderer(tcr);
51 }
52
53 scroPanel.getViewport().setBackground(Color.WHITE);
54 scroPanel.getViewport().add(table);
55
56 //總體界面布局------------------------//
57 getContentPane().add(scroPanel, BorderLayout.CENTER);
58 }
59
60 private void showFace() {
61 setSize(500,400);
62 Toolkit tmpTK = Toolkit.getDefaultToolkit();
63 Dimension dime = tmpTK.getScreenSize();
64
65 setLocation(200,300);
66 setVisible(true);
67 }
68
69 private void addListener() {
70 this.addWindowListener(new WindowAdapter() { //添加窗口關閉事件
71 public void windowClosing(WindowEvent e) {
72 setVisible(false);
73 dispose();
74 System.exit(0);
75 }
76 });
77 }
78
79 public static void main(String args[]) {
80 //獲取設置系統風格-------------------//
81 try {
82 String laf = UIManager.getSystemLookAndFeelClassName();
83 UIManager.setLookAndFeel(laf);
84 } catch (Exception e) {}
85
86 new TestTableCellColor();
87 }
88 }
效果圖如下:

轉自:修改JTable中某一單元格的顏色 - 可微 - 博客園 (cnblogs.com)
