想做这样一组按钮,其中每次只能有一个按钮能被按下,而同时之前被按下的那个按钮弹起,恢复到未被选择的状态.
我想用ButtonGroup来做,但不知道具体怎么实现.哪位高手指点一下

解决方案 »

  1.   

    new 一个buttongroup对象;
    然后调用add()方法添加按钮对象就可以啦
      

  2.   

    //<applet code=CBGroup.class width=400 height=500>
    //</applet>
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;public class CBGroup extends Applet implements ItemListener {
    String msg = "";
    Checkbox cbWin98,cbWinNT,cbSolaris,cbMac;
    CheckboxGroup cbGroup ;

    public void init(){
    cbGroup = new CheckboxGroup();

    cbWin98 = new Checkbox("Window 98",cbGroup,true);
    cbWinNT = new Checkbox("Window NT/2000",cbGroup,false);
    cbSolaris = new Checkbox("Solaris",cbGroup,false);
    cbMac = new Checkbox("Mac",cbGroup,false);

    cbWin98.addItemListener(this);
    cbWinNT.addItemListener(this);
    cbSolaris.addItemListener(this);
    cbMac.addItemListener(this);

    // add Checkbox to appelt window
    add(cbWin98);
    add(cbWinNT);
    add(cbSolaris);
    add(cbMac);
    }

    public void itemStateChanged(ItemEvent event){

    repaint();
    }

    public void paint(Graphics g){
    Dimension dSize = this.getSize();
    msg = cbGroup.getSelectedCheckbox().getLabel();

    // 在中央输出
    drawCenterString(msg,dSize.width,dSize.height,g);
    }

    // 在屏幕中央输出字符串
    public void drawCenterString(String message,int cxClient,int cyClient,Graphics g){

    FontMetrics fMetrics = g.getFontMetrics();

    // 获取输出坐标
    int cx = ( cxClient - fMetrics.stringWidth(message) )/2 ;
    int cy = fMetrics.getAscent() + (cyClient - (fMetrics.getAscent()+fMetrics.getDescent()))/2 ;

    g.drawString(message,cx,cy);
    }
    }
    运行如下:
    F:\>javac CBGroup.javaF:\>appletviewer CBGroup.javaF:\>
      

  3.   

    我可能没表达清楚. 我不想用ButtonGroup添加CheckBox,而是添加JBUTTON. 然后产生一个按钮(JButton)被按下,保持被按下状态不弹起,直到下一个按钮(JButton)被按下的效果. 
    还要请问, 到底能不能实现?!还是多谢yuzl32(Hello!有酒醉)
      

  4.   

    把楼上的Checkbox改成JButton是一样的啊