我要做的组合框,下面是多个复选框(JCheckBox),支持多选,选中的返回到上面的结果栏。形式如下,(田)代表选中
 
------------------
 a,b,c             
__________________\/  田  a
  田  b
  田  c
  口  d 请高手们指点一二,如有案例请提供链接,谢谢!
  

解决方案 »

  1.   

    /*
     * JCheckBoxDemo.java
     *
     * Created on 2006年12月22日, 下午12:59
     */package wqlgui;import java.util.ArrayList;
    import javax.swing.JCheckBox;/**
     *
     * @author  zwql
     */
    public class JCheckBoxDemo extends javax.swing.JFrame {
        
        /** Creates new form JCheckBoxDemo */
        public JCheckBoxDemo() {
            initComponents();
            addActionListener(jCheckBox1);
            addActionListener(jCheckBox2);
            addActionListener(jCheckBox3);
            addActionListener(jCheckBox4);
            addActionListener(jCheckBox5);
        }
        
        public void addActionListener(JCheckBox checkbox){
            final JCheckBox c;
            c=checkbox;
            checkbox.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    checkboxActionPerformed(evt,c);
                }
            });
        }
        
        public void checkboxActionPerformed(java.awt.event.ActionEvent evt,JCheckBox checkbox){
            StringBuffer sbuffer = new StringBuffer();
            if(jCheckBox1.isSelected()){
                sbuffer.append(jCheckBox1.getText()+",");
            }
            if(jCheckBox2.isSelected()){
                sbuffer.append(jCheckBox2.getText()+",");
            }
            if(jCheckBox3.isSelected()){
                sbuffer.append(jCheckBox3.getText()+",");
            }
            if(jCheckBox4.isSelected()){
                sbuffer.append(jCheckBox4.getText()+",");
            }
            if(jCheckBox5.isSelected()){
                sbuffer.append(jCheckBox5.getText()+",");
            }
            String s = sbuffer.toString();
            jTextField1.setText(s.substring(0,s.length()-1));
        }
        
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">
        private void initComponents() {
            jTextField1 = new javax.swing.JTextField();
            jPanel1 = new javax.swing.JPanel();
            jCheckBox3 = new javax.swing.JCheckBox();
            jCheckBox1 = new javax.swing.JCheckBox();
            jCheckBox2 = new javax.swing.JCheckBox();
            jCheckBox4 = new javax.swing.JCheckBox();
            jCheckBox5 = new javax.swing.JCheckBox();        getContentPane().setLayout(null);        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().add(jTextField1);
            jTextField1.setBounds(0, 0, 162, 19);        jPanel1.setLayout(null);        jCheckBox3.setText("c");
            jCheckBox3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
            jCheckBox3.setMargin(new java.awt.Insets(0, 0, 0, 0));
            jPanel1.add(jCheckBox3);
            jCheckBox3.setBounds(0, 40, 162, 15);        jCheckBox1.setText("a");
            jCheckBox1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
            jCheckBox1.setMargin(new java.awt.Insets(0, 0, 0, 0));
            jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jCheckBox1ActionPerformed(evt);
                }
            });        jPanel1.add(jCheckBox1);
            jCheckBox1.setBounds(0, 0, 162, 15);        jCheckBox2.setText("b");
            jCheckBox2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
            jCheckBox2.setMargin(new java.awt.Insets(0, 0, 0, 0));
            jPanel1.add(jCheckBox2);
            jCheckBox2.setBounds(0, 15, 162, 20);        jCheckBox4.setText("d");
            jCheckBox4.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
            jCheckBox4.setMargin(new java.awt.Insets(0, 0, 0, 0));
            jPanel1.add(jCheckBox4);
            jCheckBox4.setBounds(0, 60, 160, 15);        jCheckBox5.setText("e");
            jCheckBox5.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
            jCheckBox5.setMargin(new java.awt.Insets(0, 0, 0, 0));
            jPanel1.add(jCheckBox5);
            jCheckBox5.setBounds(0, 80, 160, 15);        getContentPane().add(jPanel1);
            jPanel1.setBounds(0, 19, 162, 110);        pack();
        }// </editor-fold>    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO 将在此处添加您的处理代码:
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                   JCheckBoxDemo demo =  new JCheckBoxDemo();
                   demo.setSize(80,160);
                   demo.setVisible(true);
                }
            });
        }
        
        // 变量声明 - 不进行修改
        public javax.swing.JCheckBox jCheckBox1;
        public javax.swing.JCheckBox jCheckBox2;
        public javax.swing.JCheckBox jCheckBox3;
        public javax.swing.JCheckBox jCheckBox4;
        public javax.swing.JCheckBox jCheckBox5;
        public javax.swing.JPanel jPanel1;
        public javax.swing.JTextField jTextField1;
        // 变量声明结束
        
    }
      

  2.   

    public void addActionListener(JCheckBox checkbox){
            final JCheckBox c;
            c=checkbox;
            checkbox.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    checkboxActionPerformed(evt,c);
                }
            });
        }这个方法中变量checkbox , c 可以去掉,没用
      

  3.   

    这位兄弟,非常感谢你的答复!你的答案很有参考价值!可能是我没有把需求解释清楚,你的答案并不满足我的需求。我要的效果是一个组合框点击右边那个箭头后弹出下拉菜单,下拉的弹出菜单要求有你程序里的A B C D (复选框)选项,并且支持多选,选中的返回到上面的结果栏,至于选完后如何隐藏的问题,可以再点击那个箭头隐藏。