加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Java UI界面组件小结(五) JRadioButton

(2014-11-03 20:24:20)
标签:

java

ui

ui界面

jradiobutton

分类: Java/Android

JRadioButton是一个带标签的圆形选择框,有两个状态分别是选中状态和未选中状态,Java API上将此类推荐为单选按钮,其原因大多是因为外形上的因素,其实质上与JCheckBox是相似的,都是继承自JToggleButton,并实现了Accessible接口。将一组JRadioButton用作单选钮的时候,一般将其添加到GroupButton的对象中,以保证一组类按钮的单选。也就是说,一般而言,JRadioButtonButtonGroup是组合在一起使用的,下面分别介绍这两个类。

JRadioButton

构造函数

//创建一个初始化为未选择的单选按钮,其文本未设定

JRadioButton();

//创建一个单选按钮,其属性来自提供的 Action

JRadioButton(Action a);

//创建一个初始化为未选择的单选按钮,其具有指定的图像但无文本

JRadioButton(Icon icon);

//创建一个具有指定图像和选择状态为selected指定的单选按钮,但无文本。

JRadioButton(Icon icon, boolean selected);

//创建一个具有指定文本的状态为未选择的单选按钮

JRadioButton(String text);

//创建一个具有指定文本和选择状态的单选按钮

JRadioButton(String text, boolean selected);

//创建一个具有指定的文本和图像并初始化为未选择的单选按钮

JRadioButton(String text, Icon icon);

//创建一个具有指定的文本、图像和选择状态为selected指定的单选按钮。

JRadioButton(String text, Icon icon, boolean selected);

JRadioButton需要注意的事件:

ItemEvent,因此需要添加ItemListener,需要实现ItemListener接口,该接口只有一个必须实现的函数

public void itemStateChanged( ItemEvent event )

ButtonGroup

该类只有一个空构造函数ButtonGroup()

类中重要的方法:

//将按钮添加到组中

void add(AbstractButton b);

//从组中移除按钮

void remove(AbstractButton b);

//清除选中内容,从而没有选择 ButtonGroup 中的任何按钮

void clearSelection();

//ButtonModel 设置选择值

void setSelected(ButtonModel m, boolean b);

//返回对是否已选择一个 ButtonModel 的判断

boolean isSelected(ButtonModel m);

下面给出一个例子,例子中是一道计算机的单选题目,点击选项会进行单选,点击提交,会显示是否选择正确,点击重做,会清除选择,并提示重新答题,给出示例代码并不是最简单的实现,仅仅是为了给出示例,才会如此书写:

public class RadioButtonFrame extends JFrame {

   

    private JTextField result;//显示结果

    private JLabel issue;//显示问题

    //四个选项

    private JRadioButton selectA, selectB, selectC, selectD;

    //放置题目和放置按钮的两个面板

    private JPanel p1, p2;

    private JButton refresh, submit;

    //题目正确与否的标志

    private boolean isRight;

    //题目选项组

    ButtonGroup group;

   

   

    public RadioButtonFrame()

    {

       super( "测试题1" );

       setLayout( new GridLayout( 2, 1 ) );

       isRight = false;

       p1 = new JPanel();

       p2 = new JPanel();

       add( p1 );

       add( p2 );

       p1.setLayout( new GridLayout( 6, 1 ) );

       p2.setLayout( new GridLayout( 1, 2 ) );

      

       

       issue = new JLabel( "下列关于文档窗口的说法中正确的是" );

       p1.add( issue );

      

       selectA = new JRadioButton( "A.可以同时打开多个文档窗口,但在屏幕上只能见到一个文档的窗口", false );

       selectB = new JRadioButton( "B.可以同时打开多个文档窗口,被打开的窗口都是活动窗口", false );

       selectC = new JRadioButton( "C.可以同时打开多个文档窗口,但其中只有一个是活动窗口", false );

       selectD = new JRadioButton( "D.只能打开一个文档窗口 ", false );

       p1.add( selectA );

       p1.add( selectB );

       p1.add( selectC );

       p1.add( selectD );

       //将四个选项添加进按钮组

       //保证只有一个选项选中

       group = new ButtonGroup();

       group.add( selectA );

       group.add( selectB );

       group.add( selectC );

       group.add( selectD );

      

       result = new JTextField( "请作答" );

       result.setEditable( false );

       p1.add( result );

      

       submit = new JButton( "提交" );

       refresh = new JButton( "重做" );

       p2.add( submit );

       p2.add( refresh );

      

       JRadioHandler rHandler = new JRadioHandler();

       ActionHandler aHandler = new ActionHandler();

       //添加ItemListener

       selectA.addItemListener( rHandler );

       selectB.addItemListener( rHandler );

       selectC.addItemListener( rHandler );

       selectD.addItemListener( rHandler );

      

       submit.addActionListener( aHandler );

       refresh.addActionListener( aHandler );

      

       setVisible( true );

       setSize( 500, 400 );

       setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

      

      

      

    }//end RadioButtonFrame

   

    private class JRadioHandler implements ItemListener

    {

      

       public void itemStateChanged( ItemEvent event )

       {

           //C为正确答案

           if( selectC.isSelected() )

              isRight = true;

           else

              isRight = false;

          

       }

    }//end class JRadioHandler

   

    private class ActionHandler implements ActionListener

    {

      

       public void actionPerformed( ActionEvent event )

       {          

           if( event.getSource() == submit )

           {

              System.out.print( "结果: " + group.isSelected( selectA.getModel() ) );

              if( isRight )

                  result.setText( "回答正确!" );

              else

                  result.setText( "回答错误!" );

           }//end if

          

           else if( event.getSource() == refresh )

           {

              //清除组中所有按钮的选择状态

              group.clearSelection();

              result.setText( "请作答" );

           }

       }//end actionPerfromed

    }//end class ActionHandler

   

   

    public static void main( String[] args )

    {

       RadioButtonFrame test = new RadioButtonFrame();

    }//end main

   

   

}//end RadioButtonFrame

代码运行的效果如图:

http://s9/mw690/001ZkYorty6NkjqNcco68&690UI界面组件小结(五) JRadioButton" TITLE="Java UI界面组件小结(五) JRadioButton" />nbsp;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有