自定义Java ListCellRenderer-Can';t单击JCheckBox
创建自定义ListCellRenderer:自定义Java ListCellRenderer-Can';t单击JCheckBox,java,focus,jcheckbox,listcellrenderer,Java,Focus,Jcheckbox,Listcellrenderer,创建自定义ListCellRenderer: import java.awt.Component; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; /** * * @author Spencer */ public class TaskRende
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
/**
*
* @author Spencer
*/
public class TaskRenderer implements ListCellRenderer {
private Task task;
private JPanel panel = new JPanel();
private JCheckBox checkbox = new JCheckBox();
private JLabel label = new JLabel();
public TaskRenderer() {
panel.add(checkbox);
panel.add(label);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
task = (Task) value;
label.setText(task.getName());
return panel;
}
}
使用上述类呈现JList中的每个单元格,但无法单击面板中每个单元格的复选框。我想这和没有集中注意力有关。有什么想法吗
谢谢,
Spencer您的自定义渲染器只是控制JList内容的外观,而不是添加任何功能,例如修改组件的能力(复选框)-将其想象为用于依次显示每个列表单元格的橡皮戳 我建议通过以下方式解决问题:
GetListCellRenderComponent()中设置复选框selected状态
,否则所有复选框都将处于保存状态