91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Java Swing中CheckedListBox的最佳實踐

小樊
83
2024-09-03 13:49:08
欄目: 編程語言

在Java Swing中,沒有名為CheckedListBox的組件,但是可以使用JList和JCheckBox結合使用來創建一個帶有復選框的列表

  1. 首先,創建一個自定義的ListModel,用于存儲帶有復選框的列表項:
import javax.swing.*;

public class CheckedListModel extends DefaultListModel {
    public void addElement(Object obj) {
        super.addElement(new CheckedListItem(obj));
    }
}
  1. 接下來,創建一個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;
    }
}
  1. 創建一個自定義的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;
    }
}
  1. 在主窗口中添加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);
    }
}

這樣,你就創建了一個帶有復選框的列表。當用戶點擊列表項時,相應的復選框將被選中或取消選中。你可以根據需要修改這些代碼以適應你的應用程序。

0
莱芜市| 眉山市| 邻水| 青岛市| 乐业县| 巫山县| 太仆寺旗| 河间市| 于都县| 东乌珠穆沁旗| 南乐县| 武平县| 乡宁县| 石嘴山市| 韶关市| 韶山市| 土默特右旗| 克拉玛依市| 邢台市| 科技| 铅山县| 湟源县| 巴东县| 涞源县| 安徽省| 城步| 肇源县| 富顺县| 两当县| 鄂托克旗| 平顶山市| 三河市| 页游| 崇明县| 沈丘县| 罗田县| 栖霞市| 枞阳县| 抚顺市| 哈巴河县| 肇庆市|