我想实现如下效果的JListMyListItem 就是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);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货