黑马程序员技术交流社区
标题:
如何在JList中添加想要的组件
[打印本页]
作者:
侯林林
时间:
2012-8-19 22:38
标题:
如何在JList中添加想要的组件
怎样用ListCellRenderer在JList中添加想要的组件,看了API,不是很懂,向高手请教。。。
作者:
侯林林
时间:
2012-8-23 19:43
经过多方查询,自己知道了,在此自己回答,希望跟我一起不懂的这个问题的人能够了解
例:将列表框数据项显示为复选框
package restaurant.order;
import java.awt.*;
import javax.swing.*;
public class Jlist {
/**
* @param args
*/
JFrame f=new JFrame();
JList l;
JPanel p=new JPanel();
public Jlist(){
Object[] o={"a","b","c","d"};
l=new JList(o);
l.setSize(30, 25);
l.setCellRenderer(new CheckBoxListCellRenderer());//设置列表框单元渲染器
/*
* 内部类CheckBoxListCellRenderer声明实现列表框单元渲染器接口,将列表框各
* 数据项表现为复选框组件,列表框的每个数据项都要执行该对象的
* getListCellRendererComponent()方法用于设置每个复选框的行为和状态,方法的参数传递列表框当前数据项的状态。
* */
f.getContentPane().setLayout(new FlowLayout());
f.getContentPane().add(new JScrollPane(l));
f.setSize(200,300);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Jlist jl=new Jlist();
}
/*
实现列表框单元渲染器接口ListCellRenderer:
ListCellRenderer声明如下:
Public interface ListCellRenderer{
Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus)
}
其中,getListCellRendererComponent()的list参数指定当前列表框组件;value指定列表框当前数据项值,即list.getModel().getElementAt(index)值;index指定当前数据项序号:isSelected指定数据项是否被选中;cellHastFocus指定数据项是否拥有焦点。该方法返回已配置用于显示指定值的组件 ,再调用该组件的paint()方法在列表框中“画出”组件,显示组件本身的形象。
*/
public class CheckBoxListCellRenderer extends JCheckBox implements ListCellRenderer{
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// TODO Auto-generated method stub
setText(value.toString()); //指定列表框当前数据项值
setSelected(isSelected); //当前数据项选中状态
return this;
}
}
}
作者:
侯林林
时间:
2012-8-26 13:35
问题已解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2