随笔-8  评论-14  文章-0  trackbacks-0

想要定义JList的形式的要通过实现接口ListCellRenderer来设置,使用方法如下:
首先,定义一个类实现接口ListCellRenderer的方法 

   

getListCellRendererComponent(JList list, 
                            Object value, 
                            
int index, 
                            
boolean isSelected, 
                            
boolean cellHasFocus)

例子:
 1 /**
 2 * 用于处理JList的形式
 3 @author Lonsy
 4 */
 5 public class CheckBoxItem implements ListCellRenderer 
 6 
 7     /**
 8     * 定义其形式为CheckBox
 9     */
10     private JCheckBox jcb;
11 
12     /**
13     * 构造函数
14     */
15     public CheckBoxItem() {
16         jcb = new JCheckBox();
17     }
18 
19     /**
20     * 实现ListCellRenderer的getListCellRendererComponent接口
21     */
22     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
23         jcb.setBackground(Color.white);        
24         jcb.setText(value.toString());
25         jcb.setSelected(isSelected); 
26         return jcb;
27     }
28 }


在这里,将其选项定义为JCheckBox形式。
然后,在需要使用此形式的地方使用setCellRenderer()方法设置,如下

1     JList jl = new JList();
2     jl.setCellRenderer(new CheckBoxItem());

这样就可以了。
当然,通过ListCellRenderer可以设置更多的JList相关属性,详细参阅Java Doc
posted on 2008-07-25 15:33 Lonsy 阅读(1147) 评论(4)  编辑  收藏 所属分类: Analysis

评论:
# re: 制定JList的选项为JCheckBox 2008-08-06 23:35 | 评论
名与内容不符, 该代码无法取消JCheckBox 的选择,只是做了现实而已  回复  更多评论
  
# re: 制定JList的选项为JCheckBox 2008-08-06 23:38 | Lonsy
@评论
可以的,这是我一个项目的某个细节。
25 jcb.setSelected(isSelected);
用这句话实现的选择和取消选择的。
??  回复  更多评论
  
# re: 制定JList的选项为JCheckBox[未登录] 2008-11-22 17:12 | Robert
但是怎样知道选选择了那一项呢??我是个初学者,能说明一下吗
  回复  更多评论
  
# re: 制定JList的选项为JCheckBox[未登录] 2008-11-23 12:20 | lonsy
@Robert
getSelectedValue()
这个只是指定它的UI而已,获取选择的项还是原来的方法。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: