我想在JList中出现一个checkbox,我是这样做的:

山卜居士 2002-03-15 04:52:37
我自己做了一个CheckListCellRenderer 和CheckListModel如下,
但是为什么程序执行后,JList没有办法点击呢?

import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;
import java.awt.event.*;

public class CheckListCellRenderer extends JCheckBox implements ListCellRenderer
{
private Border
redBorder = BorderFactory.createLineBorder(Color.red,2),
emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2);

public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus)
{
CheckListModel model = (CheckListModel)list.getModel();
setText(model.getValue(value));
setSelected(model.getCheck(value).booleanValue());
if ( isSelected ) setBorder (redBorder);
else setBorder(emptyBorder);
return this;
}


}

class CheckListModel extends DefaultListModel
{
public CheckListModel()
{
super();
}

public CheckListModel(String[] names, Boolean[] checks)
{
for(int i=0;i<names.length; ++i)
{
addElement(new Object[]
{
names[i],checks[i]
});
}
}

public String getValue(Object object)
{
Object[] array=(Object[])object;
return (String)array[0];
}

public Boolean getCheck(Object object)
{
Object[] array = (Object[]) object;
return (Boolean)array[1];
}


}


...全文
98 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruby 2002-04-20
  • 打赏
  • 举报
回复
JList的cellrenderer仅仅只用于外观,也就是说它只能显示component的外观而不能实现component的动作的功能,我建议你用JTable来实现,javax.swing.table包中有一TableCellEditor的接口,可以用这个接口来实现动作
山卜居士 2002-04-20
  • 打赏
  • 举报
回复
结了.

23,407

社区成员

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

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