自己实现的JList无法正常显示

ogiso_pest 2011-05-20 09:08:18

我想实现如下效果的JList



MyListItem 就是MyListRenderer里JLabel的text和icon,还有checkbox的值


private String text ;
private boolean selected ;
private Icon icon ;

以下是自己定义的ListCellRenderer
public class MyListRenderer extends JLabel implements MouseListener,
ListCellRenderer {

private JList list = null;
private JCheckBox checkBox = null;
private JLabel label = null;

public MyListRenderer(JList list) {

this.list = list;
checkBox = new JCheckBox();
label = new JLabel();
add(checkBox);
add(label);

}

@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
// TODO Auto-generated method stub
MyListItem item = (MyListItem)value;

label.setText(item.getItemText());
label.setIcon(item.getIconIterm());
checkBox.setSelected(item.getSelectEnable());

return this;
}

@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
int index = list.locationToIndex(e.getPoint());
MyListItem item = (MyListItem) list.getModel().getElementAt(index);
if (((SelectEnable) item).getSelectEnable()) {
System.out.println(item.getItemText());
}
}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}

}


显示

Icon icon = new ImageIcon("res/1.JPG");
MyListItem[] items = { new MyListItem("Astart"),
new MyListItem("B-BIX", true, icon),
new MyListItem("郁闷", false),
new MyListItem("abc", true),
new MyListItem("12867831", false, icon),
};

JList jList = new JList(items);
jList.setCellRenderer(new MyListRenderer(jList));

JFrame frame = new JFrame();
frame.add(jList);
frame.setSize(200, 200);
frame.setVisible(true);
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chosen0ne 2011-05-21
  • 打赏
  • 举报
回复
JLabel还可以添加其他的JLabel、CheckBox吗?它也不是容器。。。。

我觉得应该让MyListRenderer继承JPanel,然后添加其他组件
huntor 2011-05-20
  • 打赏
  • 举报
回复
Swing Hacks 书里有这个,自己去看看
viva_puppy 2011-05-20
  • 打赏
  • 举报
回复
不错~
学习啊

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧