我想实现这样一个效果 
现在有
JFrame f
JRadioButton r1,r2
JTextField t1, t2
JButton b1
ButtonGroup在t1 t2 中分别输入2个数
选择r1 然后点b1 执行一个事件 比如 两个数相加
选择r2时  点b2 执行另一个  比如 两个数想减现在我不会做的就是 在同一个 JFrame里  要这么执行 就要监听r1和b1或者r2和b2(我是这样想的)但是如何做2个有关联的监听呢……我不大会做…… 
请高人指点……

解决方案 »

  1.   


    import javax.swing.JOptionPane;/*
     * Demo.java
     *
     * Created on 2008年11月23日, 下午8:44
     *//**
     *
     * @author  jhwang
     */
    public class Demo extends javax.swing.JFrame {
            /** Creates new form Demo */
        public Demo() {
            initComponents();
        }    /** 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.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {        buttonGroup1 = new javax.swing.ButtonGroup();
            jPanel1 = new javax.swing.JPanel();
            jPanel4 = new javax.swing.JPanel();
            jLabel2 = new javax.swing.JLabel();
            num2Field = new javax.swing.JTextField();
            jPanel5 = new javax.swing.JPanel();
            jLabel1 = new javax.swing.JLabel();
            num1Field = new javax.swing.JTextField();
            jPanel6 = new javax.swing.JPanel();
            jLabel3 = new javax.swing.JLabel();
            resultLabel = new javax.swing.JLabel();
            jPanel2 = new javax.swing.JPanel();
            addRadio = new javax.swing.JRadioButton();
            minusRadio = new javax.swing.JRadioButton();
            jPanel3 = new javax.swing.JPanel();
            submit = new javax.swing.JButton();
            reset = new javax.swing.JButton();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            setTitle("Demo");        jPanel1.setLayout(new java.awt.BorderLayout());        jLabel2.setText("num2:");
            jPanel4.add(jLabel2);        num2Field.setMinimumSize(new java.awt.Dimension(30, 22));
            num2Field.setPreferredSize(new java.awt.Dimension(150, 22));
            jPanel4.add(num2Field);        jPanel1.add(jPanel4, java.awt.BorderLayout.SOUTH);        jLabel1.setText("num1:");
            jPanel5.add(jLabel1);        num1Field.setMinimumSize(new java.awt.Dimension(100, 22));
            num1Field.setPreferredSize(new java.awt.Dimension(150, 22));
            jPanel5.add(num1Field);        jPanel1.add(jPanel5, java.awt.BorderLayout.CENTER);        jLabel3.setText("结果:");
            jPanel6.add(jLabel3);        resultLabel.setPreferredSize(new java.awt.Dimension(150, 20));
            jPanel6.add(resultLabel);        jPanel1.add(jPanel6, java.awt.BorderLayout.NORTH);        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);        buttonGroup1.add(addRadio);
            addRadio.setSelected(true);
            addRadio.setText("加法");
            addRadio.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    addRadioActionPerformed(evt);
                }
            });
            jPanel2.add(addRadio);        buttonGroup1.add(minusRadio);
            minusRadio.setText("减法");
            minusRadio.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    minusRadioActionPerformed(evt);
                }
            });
            jPanel2.add(minusRadio);        getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);        submit.setText("确定");
            submit.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    submitActionPerformed(evt);
                }
            });
            jPanel3.add(submit);        reset.setText("取消");
            reset.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    resetActionPerformed(evt);
                }
            });
            jPanel3.add(reset);        getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);        pack();
        }// </editor-fold>private void addRadioActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        flag = 0;
    }private void minusRadioActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        flag = 1;
    }private void submitActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        double num1 = 0,num2 = 0;
        try{
            num1 = Double.valueOf(num1Field.getText());
        }catch(Exception e){
            JOptionPane.showMessageDialog(this, "num1中只能是数字!");
            return;
        }
         try{
             num2 = Double.valueOf(num2Field.getText());
        }catch(Exception e){
              JOptionPane.showMessageDialog(this, "num2中只能是数字!");
            return;
        }
        
        if(flag == 0){
            resultLabel.setText(String.valueOf(num1+num2));
        }else if(flag == 1){
            resultLabel.setText(String.valueOf(num1-num2));
        }else{
            resultLabel.setText("出现无法预料的错误!");
        }
    }private void resetActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        System.exit(0);
    }    /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Demo().setVisible(true);
                }
            });
        }    // Variables declaration - do not modify
        private javax.swing.JRadioButton addRadio;
        private javax.swing.ButtonGroup buttonGroup1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JPanel jPanel2;
        private javax.swing.JPanel jPanel3;
        private javax.swing.JPanel jPanel4;
        private javax.swing.JPanel jPanel5;
        private javax.swing.JPanel jPanel6;
        private javax.swing.JRadioButton minusRadio;
        private javax.swing.JTextField num1Field;
        private javax.swing.JTextField num2Field;
        private javax.swing.JButton reset;
        private javax.swing.JLabel resultLabel;
        private javax.swing.JButton submit;
        // End of variables declarationprivate int flag = 0;//标记进行的是 + - 运算
    }
      

  2.   


    import javax.swing.JOptionPane;/*
     * Demo.java
     *
     * Created on 2008年11月23日, 下午8:44
     *//**
     *
     * @author  jhwang
     */
    public class Demo extends javax.swing.JFrame {
            /** Creates new form Demo */
        public Demo() {
            initComponents();
        }    /** 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.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {        buttonGroup1 = new javax.swing.ButtonGroup();
            jPanel1 = new javax.swing.JPanel();
            jPanel4 = new javax.swing.JPanel();
            jLabel2 = new javax.swing.JLabel();
            num2Field = new javax.swing.JTextField();
            jPanel5 = new javax.swing.JPanel();
            jLabel1 = new javax.swing.JLabel();
            num1Field = new javax.swing.JTextField();
            jPanel6 = new javax.swing.JPanel();
            jLabel3 = new javax.swing.JLabel();
            resultLabel = new javax.swing.JLabel();
            jPanel2 = new javax.swing.JPanel();
            addRadio = new javax.swing.JRadioButton();
            minusRadio = new javax.swing.JRadioButton();
            jPanel3 = new javax.swing.JPanel();
            submit = new javax.swing.JButton();
            reset = new javax.swing.JButton();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            setTitle("Demo");        jPanel1.setLayout(new java.awt.BorderLayout());        jLabel2.setText("num2:");
            jPanel4.add(jLabel2);        num2Field.setMinimumSize(new java.awt.Dimension(30, 22));
            num2Field.setPreferredSize(new java.awt.Dimension(150, 22));
            jPanel4.add(num2Field);        jPanel1.add(jPanel4, java.awt.BorderLayout.SOUTH);        jLabel1.setText("num1:");
            jPanel5.add(jLabel1);        num1Field.setMinimumSize(new java.awt.Dimension(100, 22));
            num1Field.setPreferredSize(new java.awt.Dimension(150, 22));
            jPanel5.add(num1Field);        jPanel1.add(jPanel5, java.awt.BorderLayout.CENTER);        jLabel3.setText("结果:");
            jPanel6.add(jLabel3);        resultLabel.setPreferredSize(new java.awt.Dimension(150, 20));
            jPanel6.add(resultLabel);        jPanel1.add(jPanel6, java.awt.BorderLayout.NORTH);        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);        buttonGroup1.add(addRadio);
            addRadio.setSelected(true);
            addRadio.setText("加法");
            addRadio.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    addRadioActionPerformed(evt);
                }
            });
            jPanel2.add(addRadio);        buttonGroup1.add(minusRadio);
            minusRadio.setText("减法");
            minusRadio.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    minusRadioActionPerformed(evt);
                }
            });
            jPanel2.add(minusRadio);        getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);        submit.setText("确定");
            submit.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    submitActionPerformed(evt);
                }
            });
            jPanel3.add(submit);        reset.setText("取消");
            reset.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    resetActionPerformed(evt);
                }
            });
            jPanel3.add(reset);        getContentPane().add(jPanel3, java.awt.BorderLayout.SOUTH);        pack();
        }// </editor-fold>private void addRadioActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        flag = 0;
    }private void minusRadioActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        flag = 1;
    }private void submitActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        double num1 = 0,num2 = 0;
        try{
            num1 = Double.valueOf(num1Field.getText());
        }catch(Exception e){
            JOptionPane.showMessageDialog(this, "num1中只能是数字!");
            return;
        }
         try{
             num2 = Double.valueOf(num2Field.getText());
        }catch(Exception e){
              JOptionPane.showMessageDialog(this, "num2中只能是数字!");
            return;
        }
        
        if(flag == 0){
            resultLabel.setText(String.valueOf(num1+num2));
        }else if(flag == 1){
            resultLabel.setText(String.valueOf(num1-num2));
        }else{
            resultLabel.setText("出现无法预料的错误!");
        }
    }private void resetActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
        System.exit(0);
    }    /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Demo().setVisible(true);
                }
            });
        }    // Variables declaration - do not modify
        private javax.swing.JRadioButton addRadio;
        private javax.swing.ButtonGroup buttonGroup1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JPanel jPanel2;
        private javax.swing.JPanel jPanel3;
        private javax.swing.JPanel jPanel4;
        private javax.swing.JPanel jPanel5;
        private javax.swing.JPanel jPanel6;
        private javax.swing.JRadioButton minusRadio;
        private javax.swing.JTextField num1Field;
        private javax.swing.JTextField num2Field;
        private javax.swing.JButton reset;
        private javax.swing.JLabel resultLabel;
        private javax.swing.JButton submit;
        // End of variables declarationprivate int flag = 0;//标记进行的是 + - 运算
    }