繁体   English   中英

如何在JList(Java)中添加自定义复选框?

[英]How to add a custom checkbox into JList (Java)?

该程序的外观如下:

http://i.stack.imgur.com/zOFCh.png

这就是我想要的样子:

http://i.stack.imgur.com/XTdlJ.png

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

  1. Checked.png和

  2. unchecked.png

当我点击每日goals #1它应该设置为state = true并且checked.png应该出现并保持选中状态,除非再次单击它。 Unchecked.png可能是在标准jList column

我也想将我的复选框放置在行尾(填充)的左侧1厘米,不确定如何在Java中完成它。 (通过查看图片,您会更好地理解)

看了一些指南之后,我了解到向JList column添加额外内容的唯一方法是使用ListCellRenderer 我尝试了很长时间没有成功,所以想到了问别人。 有人对如何执行此操作有任何想法吗?

想法是让它工作,然后通过将Jtable列更改为Daily目标并显示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; } }); }} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM