我想在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];
}
}