问题描述
我正在尝试将 JCheckBox 数组放入 JScrollPane。该列表会很长(数百个),因此滚动很重要。我这里有两个问题。我应该说,我只是作为一种爱好来做这件事,没有专业或学术人士可以问。感谢您的帮助。
- 我需要多选框,这就像单选按钮
- 我不知道如何让滚动条出现
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 (将#修改为@)