java - 如何将自定义复选框添加到 JList (Java) 中?

标签 java checkbox jlist

程序如下:

/image/zOFCh.png

这就是我想要的样子:

/image/XTdlJ.png

正如你在图片中看到的,我尝试了一下并了解到我需要使用ListCellRenderer,但问题是我创建了 2 个自定义 png 文件

  1. checked.png 和

  2. unchecked.png

当我点击每日goals #1时,它应该给出state = true并且checked.png应该出现并保持选中状态,除非我再次点击它。 Unchecked.png 可以是 jList 列 上的标准。

我还想将我的复选框放置在行尾左侧 1 厘米处(填充),遗憾的是不确定它在 java 中是如何完成的。 (看图你就更明白了)

在浏览了一些指南后,我了解到向 JList 列 添加额外内容的唯一方法是使用 ListCellRenderer。我尝试了很长一段时间都没有成功,所以想问问其他人。有人对如何做到这一点有任何想法吗?

我们的想法是让它工作,然后通过将 Jtable 列更改为每日目标并显示 X 来指示目标已实现,将其显示在 JTable 中。但我认为我应该能够做到这一点,主要问题是自定义复选框的实现。

最佳答案

  1. 您可以将两种类型的复选框用作 jlist 单元格渲染器,一种用于选定的单元格,另一种用于未选定的单元格。
  2. 使用 ImageIcon 用您的图像装饰复选框。
  3. 在 jlist 单元格渲染中,您需要具有返回预期复选框以渲染该列表单元格的逻辑。
  4. 注意将复选框中的文本覆盖为实际列表单元格值

    public class TestFrame extends JFrame {
    ImageIcon iconChecked = new ImageIcon(TestFrame.class.getResource("checked.png"));
    ImageIcon iconUnchecked = new ImageIcon(TestFrame.class.getResource("unchecked.png"));
    JList jList = new JList(new Object[]{"ABC", "123"});
    
    public TestFrame() {
        this.add(jList);
        jList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    
    jList.setCellRenderer(new ListCellRenderer() {
        @Override
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
            for (int i : list.getSelectedIndices()) {
                if (index == i) {
                    JCheckBox checkBoxChecked = new JCheckBox(value.toString(), iconChecked);
                    return checkBoxChecked;
                }
            }
    
            JCheckBox checkBoxUnchecked = new JCheckBox(value.toString(), iconUnchecked);
            return checkBoxUnchecked;
        }
    });
    }}
    

关于java - 如何将自定义复选框添加到 JList (Java) 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33048629/

相关文章:

java - 为什么我的 hashmap j 单元测试返回 'expecting null pointer exception' ?

javascript - 如何将复选框设置为带有确认消息的按钮?

javascript - 复选框限制功能发生后复选框变得不可点击reactjs

java - JList DefaultListModel ListSelectionListener

java - IF 语句的 JList 数据添加

java - 如何将 MouseListener 添加到 JList 项目?

java - 在 HBase 单元中保存多个版本

java - 我在这个java程序中找不到运行时错误(NZEC)

javascript - 我如何计算在一个页面上使用 jQuery 选择了多少个复选框

java - 安卓。替换字符串中的 * 字符