import java.awt.event.*;
import java.awt.*;
import javax.swing.*;public class TestAnniu {
  JButton xh = new JButton();
  JButton xm = new JButton();
 
  
  ButtonGroup buttonGroup2 = new ButtonGroup();
  JButton bt=new JButton("ok");
public TestAnniu()
{
  
     JFrame f=new JFrame("this is a test");
     f.setLayout(new FlowLayout());
     xh.setFont(new java.awt.Font("Dialog", 0, 15));
     xh.setText("按学号");
     xh.setBounds(new Rectangle(20, 417, 74, 34));
     
     xm.setBounds(new Rectangle(95, 417, 74, 34));
     xm.setText("按姓名");
     xm.setFont(new java.awt.Font("Dialog", 0, 15));
     buttonGroup2.add(xh);
     buttonGroup2.add(xm);
     bt.addActionListener(new bt_action());
     f.add(xh);f.add(xm);f.add(bt);
     f.setBounds(300,300,400,400);
     f.setVisible(true);
}  
class bt_action implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(xh.isSelected())
{
JOptionPane.showMessageDialog(null,"queren");
}
if(xm.isSelected())
{
JOptionPane.showMessageDialog(null, "quxiao");
}
}}

}
我的想法是使JButton像JRadioButton那样与ButtonGroup使用
但结果没有达到预期效果,
是不是JButton不能达到那种效果呢?
还是我的程序代码有问题?
望前辈们赐教~
感激不尽~~

解决方案 »

  1.   

    你要的是不是这样的效果?public class TestAnniu{
    JButton xh = new JButton();
    JButton xm = new JButton();
    ButtonGroup buttonGroup2 = new ButtonGroup();
    JButton bt = new JButton("ok");
    public TestAnniu(){
    JFrame f = new JFrame("this is a test");
    f.setLayout(new FlowLayout());
    xh.setFont(new java.awt.Font("Dialog",0,15));
    xh.setText("按学号");
    xh.setBounds(new Rectangle(20,417,74,34));
    xm.setBounds(new Rectangle(95,417,74,34));
    xm.setText("按姓名");
    xm.setFont(new java.awt.Font("Dialog",0,15));
    buttonGroup2.add(xh);
    buttonGroup2.add(xm);
    bt_action listener = new bt_action();
    bt.addActionListener(listener);
    xh.addActionListener(listener);
    xm.addActionListener(listener);
    f.add(xh);
    f.add(xm);
    f.add(bt);
    f.setBounds(300,300,400,400);
    f.setVisible(true);
    }
    class bt_action implements ActionListener{
    public void actionPerformed(ActionEvent e){
    if(e.getSource() == xh){
    JOptionPane.showMessageDialog(null,"queren");
    }
    if(xm == e.getSource()){
    JOptionPane.showMessageDialog(null,"quxiao");
    }
    }
    }
    public static void main(String[] args){
    new TestAnniu();
    }
    }
      

  2.   

    我想要的不是那样的结果哦~~
    看下面的代码,如果我把jRadioButton改成JButton,能不能达到像JRdioButton的效果呢?
    我试过是不行的,不知道有没有其他办法可以达到这种效果
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.*;
    public class cxxj
        extends JFrame {
      JButton ok = new JButton();
      ButtonGroup buttonGroup2 = new ButtonGroup();
      
      JRadioButton xh = new JRadioButton();
      JRadioButton xm = new JRadioButton();
      JRadioButton bh = new JRadioButton();
      public cxxj() {
        try {
          jbInit();//调用jbInit函数,初始化窗体
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }  public static void main(String[] args) {
        cxxj cxxj = new cxxj();//实例化cxxj
      }  private void jbInit() throws Exception {
        this.setLocale(java.util.Locale.getDefault());
        this.getContentPane().setLayout(null);
        
        确定.setBounds(new Rectangle(465, 412, 85, 34));
        确定.setText("确   定");
        确定.addActionListener(new cxxj_确定_actionAdapter());
        
       
       
        xh.setText("按学号");
        xh.setBounds(new Rectangle(20, 417, 74, 34));
        xm.setBounds(new Rectangle(95, 417, 74, 34));
        xm.setText("按姓名");
        bh.setBounds(new Rectangle(174, 418, 74, 34));
        bh.setText("按班号");
       
       
        
        this.getContentPane().add(确定, null); 
        this.getContentPane().add(bh, null);
        this.getContentPane().add(xm, null);
        this.getContentPane().add(xh, null);
        
        this.setBounds(100, 100, 800, 500);
        this.setVisible(true);//设置窗口可见
        
        buttonGroup2.add(xh);
        buttonGroup2.add(bh);
        buttonGroup2.add(xm);
      }
    class cxxj_cancel_actionAdapter{
      public void actionPerformed(ActionEvent e) {
      if (xh.isSelected()) {  
            System.out.println("嘿嘿");
            }
       else if (xm.isSelected()) {
            System.out.println("呵呵");
            }
       else i (bh.isSelected()) {
             System.out.println("哈哈");
            }
        
      }
    }