选择多个复选框中的checkboxgroup java swing [英] select many Checkbox in a checkboxgroup java swing

查看:401
本文介绍了选择多个复选框中的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 Sc​​rollablePane(LayoutManager layout){
super(layout);
}

public Sc​​rollablePane(){
}

@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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆