首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义Java ListCellRenderer -无法单击JCheckBox

自定义Java ListCellRenderer -无法单击JCheckBox
EN

Stack Overflow用户
提问于 2010-05-14 17:28:03
回答 2查看 2.7K关注 0票数 0

创建自定义ListCellRenderer:

代码语言:javascript
复制
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,但是不能单击每个单元格的面板中的复选框。我以为是因为它没有得到关注。有什么想法吗?

谢谢,斯宾塞

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-14 18:25:42

您的自定义渲染器只是控制JList内容的外观,而不是添加任何功能,如修改组件的能力(复选框)-想象一下,它只是一个橡皮图章,用于依次显示每个列表单元格。

我建议通过以下方式解决这个问题:

  1. 使用单列JTable而不是JList。
  2. 通过子类化AbstractTableModel来定义定制的TableModel实现,并重写getColumnClass(int)以返回列0的Boolean.class。请注意,默认渲染器现在会将其呈现为JCheckBox。但是,它不会像您所要求的那样是一个带标签的JCheckBox。
  3. 添加一个定制的布尔值编辑器;例如,myTable.setCellRenderer(Boolean.class,new JCheckBox an Booleans编辑器,使用类似于: myTable.setCellEditor(Boolean.class,
  4. ( new JCheckBox("Is Enabled);
票数 2
EN

Stack Overflow用户

发布于 2010-05-29 01:15:58

JIDE Common Layer有一个通用公共许可证的CheckBoxList。基本上,它使用一个JPanel作为单元格渲染器,在另一个渲染器(您可以自己设置)前面有一个JCheckBox,并处理鼠标/键事件。

如果你真的想坚持你的JCheckBox渲染器,你可以监听鼠标/键事件,并适当地处理它们。请记住,正如Adamski指出的,单元格渲染器是一个橡皮图章(Swing 101),因此您必须始终在getListCellRendererComponent()中将复选框设置为选中状态,否则所有复选框都将具有保存状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2833070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档