java jlist checkbox_包含jcheckbox和字符串的jlist,使用非ctrl单击选择?

这篇博客展示了如何在Java Swing中创建一个JList,并使用自定义的FunkyCellRendererComponent来渲染列表项,使每个列表项包含一个复选框。当复选框被选中时,相应的列表项也会被选择。代码详细解释了如何设置渲染器并处理选中状态。
摘要由CSDN通过智能技术生成

这样做,有点;虽然它本质上是伪造的,因为复选框实际上不做任何事情,但是选中它们确实会选择列表项。

import java.awt.Component;

import java.awt.FlowLayout;

import javax.swing.BoxLayout;

import javax.swing.JCheckBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.ListCellRenderer;

public class Relequestual extends JFrame {

private final FunkyCellRendererComponent funkyCRC = new FunkyCellRendererComponent();

public Relequestual() {

getContentPane().setLayout(new FlowLayout());

String[] items = { "Item 1", "Item 2", "Item 3", "Item 4" };

JList theList = new JList(items);

theList.setCellRenderer(

new ListCellRenderer() {

@Override

public Component getListCellRendererComponent(JList list, Object value, int index,

boolean isSelected, boolean cellHasFocus) {

funkyCRC.setup(list, value, index, isSelected, cellHasFocus);

return funkyCRC;

}

});

getContentPane().add(theList);

}

/**

* @param args

*/

public static void main(String[] args) {

Relequestual gui = new Relequestual();

gui.pack();

gui.setVisible(true);

}

class FunkyCellRendererComponent extends JPanel {

private JCheckBox checkBox = new JCheckBox();

private JLabel label = new JLabel();

private JList list;

private int index;

public FunkyCellRendererComponent() {

super(null);

setLayout(new BoxLayout(this, BoxLayout.X_AXIS));

add(this.checkBox);

add(this.label);

}

public void setup(JList list, Object value, int index,

boolean isSelected, boolean cellHasFocus) {

this.list = list;

this.index = index;

this.label.setText((String) list.getModel().getElementAt(index));

if (isSelected) {

setForeground(list.getSelectionForeground());

setBackground(list.getSelectionBackground());

} else {

setForeground(list.getForeground());

setBackground(list.getBackground());

}

this.checkBox.setSelected(isSelected);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值