选择多个复选框中的checkboxgroup java swing [英] select many Checkbox in a checkboxgroup java swing
问题描述
我正在处理一个 Jframe netbeans IDE
基本上我拖放的形式,我想制作一组复选框
在一个框架中至少有两个组,每个组都有许多复选框
我想选择多个复选框
每个组和返回复选框的值我已经读取该按钮组不适用在这种情况下,因为按钮组将只有一个选择。非常感谢任何代码段或如何做到这一点的想法。
UPDATE
找到此示例这是我想要我的复选框的行为只有我不想把它们放在表加上没有表组件在netbeans IDE中我可以拖动这个目的任何想法如何做到这是非常赞赏
我同意Trashgod, JTable
可能是一个好的开始,另一个选项是要滚动自己的...
每个列是它自己的组件,允许您选择多个选项,但只在该组 p>
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.Scrollable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String [] args){
new Test();
}
public Test(){
EventQueue.invokeLater(new Runnable(){
@Override
public void run(){
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex){
ex.printStackTrace();
}
JFrame frame = new JFrame(Testing);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(0,2)); $
frame.add(new CheckBoxGroup(new String [] {Bananas,Oranages,Apples,Pears}) 学习射箭,浮在死海,用鲸鲨挥舞,风帆希腊群岛,跳伞,在雨中跳舞,循环通过荷兰})
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class CheckBoxGroup extends JPanel {
private JCheckBox all;
private List< JCheckBox>复选框;
public CheckBoxGroup(String ... options){
checkBoxes = new ArrayList<>(25);
setLayout(new BorderLayout());
JPanel header = new JPanel(new FlowLayout(FlowLayout.LEFT,1,1));
all = new JCheckBox(Select All ...);
all.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
for(JCheckBox cb:checkBoxes){
cb.setSelected (all.isSelected());
}
}
});
header.add(all);
add(header,BorderLayout.NORTH);
JPanel content = new ScrollablePane(new GridBagLayout());
content.setBackground(UIManager.getColor(List.background));
if(options.length> 0){
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weightx = 1;
for(int index = 0; index< options.length - 1; index ++){
JCheckBox cb = new JCheckBox(options [index]);
cb.setOpaque(false);
checkBoxes.add(cb);
content.add(cb,gbc);
}
JCheckBox cb = new JCheckBox(options [options.length - 1]);
cb.setOpaque(false);
checkBoxes.add(cb);
gbc.weighty = 1;
content.add(cb,gbc);
}
add(new JScrollPane(content));
}
public class ScrollablePane extends JPanel implements Scrollable {
public ScrollablePane(LayoutManager layout){
super(layout);
}
public ScrollablePane(){
}
@Override
public Dimension getPreferredScrollableViewportSize(){
return new Dimension (100,100);
}
@Override
public int getScrollableUnitIncrement(Rectangle visibleRect,int orientation,int direction){
return 32;
}
@Override
public int getScrollableBlockIncrement(Rectangle visibleRect,int orientation,int direction){
return 32;
}
@Override
public boolean getScrollableTracksViewportWidth(){
boolean track = false;
容器父= getParent();
if(parent instanceof JViewport){
JViewport vp =(JViewport)parent;
track = vp.getWidth()> getPreferredSize()。width;
}
return track;
}
@Override
public boolean getScrollableTracksViewportHeight(){
boolean track = false;
容器父= getParent();
if(parent instanceof JViewport){
JViewport vp =(JViewport)parent;
track = vp.getHeight()> getPreferredSize()。height;
}
return track;
}
}
}
}
它不做什么是返回一个选定的项目的列表,但是如何迭代 checkBoxes
列表,检查该项目是否被选中,解压缩它的文本并将其添加到另一个列表
并返回result ...?
I am working on a Jframe netbeans IDE
basically i drag and drop thing in the form i want to make a group of checkboxes
at least two groups in one frame and each group has many checkboxes
i want to select multiple checkbox
in each group and return the value of checked boxes i have read that button group is not applicable in this situation since button group will only have one selection. Any code snippet or idea on how to do this is much appreciated.
UPDATE
Found this sample this is how i want my checkbox to behave only i dont want to put them in table plus there is no table component in netbeans IDE i can drag for this purpose any idea on how to do this is much appreciated
I agree with Trashgod, a JTable
is probably a good place to start, another option is to roll your own...
Each "column" is it's own component and allows you to select multiple options, but only within the context of that "group"
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.Scrollable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(0, 2));
frame.add(new CheckBoxGroup(new String[]{"Bananas", "Oranages", "Apples", "Pears"}));
frame.add(new CheckBoxGroup(new String[]{"Learn Archery", "Float in the dead sea", "Swing with a whale shark", "Sail the greek islands", "Go skydiving", "Dance in the rain", "Cycle through the Netherlands"}));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class CheckBoxGroup extends JPanel {
private JCheckBox all;
private List<JCheckBox> checkBoxes;
public CheckBoxGroup(String... options) {
checkBoxes = new ArrayList<>(25);
setLayout(new BorderLayout());
JPanel header = new JPanel(new FlowLayout(FlowLayout.LEFT, 1, 1));
all = new JCheckBox("Select All...");
all.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (JCheckBox cb : checkBoxes) {
cb.setSelected(all.isSelected());
}
}
});
header.add(all);
add(header, BorderLayout.NORTH);
JPanel content = new ScrollablePane(new GridBagLayout());
content.setBackground(UIManager.getColor("List.background"));
if (options.length > 0) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weightx = 1;
for (int index = 0; index < options.length - 1; index++) {
JCheckBox cb = new JCheckBox(options[index]);
cb.setOpaque(false);
checkBoxes.add(cb);
content.add(cb, gbc);
}
JCheckBox cb = new JCheckBox(options[options.length - 1]);
cb.setOpaque(false);
checkBoxes.add(cb);
gbc.weighty = 1;
content.add(cb, gbc);
}
add(new JScrollPane(content));
}
public class ScrollablePane extends JPanel implements Scrollable {
public ScrollablePane(LayoutManager layout) {
super(layout);
}
public ScrollablePane() {
}
@Override
public Dimension getPreferredScrollableViewportSize() {
return new Dimension(100, 100);
}
@Override
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
return 32;
}
@Override
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
return 32;
}
@Override
public boolean getScrollableTracksViewportWidth() {
boolean track = false;
Container parent = getParent();
if (parent instanceof JViewport) {
JViewport vp = (JViewport) parent;
track = vp.getWidth() > getPreferredSize().width;
}
return track;
}
@Override
public boolean getScrollableTracksViewportHeight() {
boolean track = false;
Container parent = getParent();
if (parent instanceof JViewport) {
JViewport vp = (JViewport) parent;
track = vp.getHeight() > getPreferredSize().height;
}
return track;
}
}
}
}
What it doesn't do is return a list of selected items, but how hard would it be to iterate over the checkBoxes
List
, check to see if the item is selected or not, extract it's text and add it to another List
and return the result...?
这篇关于选择多个复选框中的checkboxgroup java swing的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!