设置列表框指定行的文字颜色


 

 1 list.setCellRenderer(new MyRenderer(new int[] {2,3}, Color.RED));   //设置列表框的第2行和第3行文字颜色为红色
 2 
 3 class MyRenderer extends DefaultListCellRenderer {  
 4       
 5     private Font font1;  
 6     private Font font2;  
 7     private Color rowcolor;  
 8     private int row;  
 9     private int[] rows;  
10  
11     public MyRenderer() {  
12         this.font1 = getFont();  
13         this.font2 = font1.deriveFont((float) (font1.getSize() + 10));  
14     }  
15  
16     public MyRenderer(int row, Color color) {  
17         this.rowcolor = color;  
18         this.row = row;  
19     }  
20  
21     public MyRenderer(int[] rows, Color color) {  
22         this.rowcolor = color;  
23         this.rows = rows;  
24     }  
25  
26     public Component getListCellRendererComponent(JList list, Object value,  
27             int index, boolean isSelected, boolean cellHasFocus) {  
28         super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);  
29         if (rows==null) {  
30             if (index == row) {  
31                 setForeground(this.rowcolor);  
32                 setFont(getFont().deriveFont((float) (getFont().getSize() + 2)));  
33             }  
34         } else {  
35             for (int i = 0; i < rows.length; i++) {  
36                 if (index == rows[i]) {  
37                     setForeground(this.rowcolor);  
38                     setFont(getFont().deriveFont((float) (getFont().getSize() + 2)));  
39                 }  
40             }  
41         }  
42  
43         return this;  
44     }  
45 }  

 

posted @ 2013-06-14 09:18  薛遗山  阅读(533)  评论(0编辑  收藏  举报