Java Swing中CheckedListBox的最佳实践

   2024-09-30 3700
核心提示:在Java Swing中,没有名为CheckedListBox的组件,但是可以使用JList和JCheckBox结合使用来创建一个带有复选框的列表首先,创建一

在Java Swing中,没有名为CheckedListBox的组件,但是可以使用JList和JCheckBox结合使用来创建一个带有复选框的列表

首先,创建一个自定义的ListModel,用于存储带有复选框的列表项:
import javax.swing.*;public class CheckedListModel extends DefaultListModel {    public void addElement(Object obj) {        super.addElement(new CheckedListItem(obj));    }}
接下来,创建一个CheckedListItem类,用于存储列表项及其状态(选中或未选中):
public class CheckedListItem {    private Object item;    private boolean isChecked;    public CheckedListItem(Object item) {        this.item = item;        this.isChecked = false;    }    public Object getItem() {        return item;    }    public boolean isChecked() {        return isChecked;    }    public void setChecked(boolean isChecked) {        this.isChecked = isChecked;    }}
创建一个自定义的ListCellRenderer,用于在JList中显示带有复选框的列表项:
import javax.swing.*;import java.awt.*;public class CheckedListCellRenderer extends JCheckBox implements ListCellRenderer {    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {        CheckedListItem item = (CheckedListItem) value;        setComponentOrientation(list.getComponentOrientation());        setFont(list.getFont());        setBackground(list.getBackground());        setForeground(list.getForeground());        setSelected(item.isChecked());        setEnabled(list.isEnabled());        setText(item.getItem().toString());        setFocusPainted(false);        return this;    }}
在主窗口中添加JList并设置自定义的ListModel和ListCellRenderer:
import javax.swing.*;public class CheckedListBoxDemo {    public static void main(String[] args) {        JFrame frame = new JFrame("Checked List Box Demo");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setSize(300, 200);        CheckedListModel model = new CheckedListModel();        model.addElement("Item 1");        model.addElement("Item 2");        model.addElement("Item 3");        JList checkedListBox = new JList(model);        checkedListBox.setCellRenderer(new CheckedListCellRenderer());        checkedListBox.addMouseListener(new MouseAdapter() {            public void mousePressed(MouseEvent e) {                int index = checkedListBox.locationToIndex(e.getPoint());                if (index != -1) {                    CheckedListItem item = (CheckedListItem) model.getElementAt(index);                    item.setChecked(!item.isChecked());                    checkedListBox.repaint();                }            }        });        frame.getContentPane().add(new JScrollPane(checkedListBox));        frame.setVisible(true);    }}

这样,你就创建了一个带有复选框的列表。当用户点击列表项时,相应的复选框将被选中或取消选中。你可以根据需要修改这些代码以适应你的应用程序。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号