在 JList 中使用 JCheckBox 数组

问题描述

我正在尝试将 JCheckBox 数组放入 JScrollPane。该列表会很长(数百个),因此滚动很重要。我这里有两个问题。我应该说,我只是作为一种爱好来做这件事,没有专业或学术人士可以问。感谢您的帮助。

  1. 我需要多选框,这就像单选按钮
  2. 我不知道如何让滚动条出现
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JCheckBox;
import javax.swing.JList;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import java.awt.Component;
import javax.swing.ListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JScrollPane;

public class NewClass {
    public NewClass(){
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        String[] string = new String[20];
        JCheckBox[] Box = new JCheckBox[20];
        JList<JCheckBox> list;
       
       JScrollPane scroll = new JScrollPane(panel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        
      // populate the array of JCheckBox[];    
        for (int i = 0; i < 20; i++){
            string[i] = "hello "+i;
            Box[i] = new JCheckBox(string[i]);
        } 
        // Make Default Renderer
        DefaultListModel<JCheckBox> model = new DefaultListModel<>();
        list = new JList<>(Box);
        list.setCellRenderer(new ListCellRenderer<JCheckBox>(){
        
       @Override
       public Component getListCellRendererComponent(JList<? extends JCheckBox> list,JCheckBox value,int index,boolean isSelected,boolean cellHasFocus) {
                // Fix background for selected cells.
                value.setBackground(isSelected ? list.getSelectionBackground() : null);
                // Select the JRadioButton too since it is selected in the list.
                value.setSelected(isSelected);
                return value;
            }});
        
        list.setModel(model);
        for (int i = 0; i<20; i++){
            model.add(i,Box[i]);
        }
        System.out.println(list);
        panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
        scroll.add(panel); // Here is where I try to put panel in a JScrollPane
        panel.add(list);
        frame.add(panel);
        frame.pack();
        frame.setSize(new Dimension(100,200));
        frame.setVisible(true);
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...