这是程序的外观:
这就是我想要的样子:
正如你在图片中看到的那样,我尝试了一下并了解到我需要使用ListCellRenderer
,但问题是我创建了2个自定义png文件
checked.png和
unchecked.png
当我每天点击goals #1
时,它应该显示state = true
并且checked.png
应该出现并保持检查,除非我再次点击它。 Unchecked.png
可能是jList column
的标准。
我还想把我的复选框放在行尾(填充)的左边1厘米处,不确定如何在java中完成它。 (通过查看图片,你会更好地理解)
在查看了一些指南之后,我了解到向JList column
添加额外内容的唯一方法是使用ListCellRenderer
。我已经尝试了一段时间没有成功,所以想到问别人。有没有人对如何做到这一点有任何想法?
我们的想法是让它工作,然后通过将Jtable列更改为每日目标并显示X来指示目标已实现,从而显示在JTable中。但我认为我应该能够做到这一点,主要问题是自定义复选框实现。
答案 0 :(得分:0)
请注意,将复选框中的文本覆盖为实际列表单元格值
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;
}
});
}}