第十五节:事件实验

作者: 魔王哪吒 | 来源:发表于2018-07-29 21:51 被阅读0次
    标题图

    目的

    1 事件机制
    2 单选按钮及事件

    要求

    1. 实现一个计算器(能实现加减乘除运算 )

    图片

    2.实现界面上单选按钮中的事件

    当按下某一单选按钮时将结果显示到最后一个输入框

    3.当用户输入错误时提示。提示“请输入数字”,输入的值可以整数或小数。不能是其它字符

    捕获输入错误时的异常,给出相应提示到结果框。

    实验步骤:

    1.定义类显示窗口,标题为“计算器”

    2.在类中添加窗口组件作为类的成员变量,
    JLabel文本,
    JRadioButton为单选按钮,
    JTextField为输入框,
    JPanel为容器,
    ButtonGroup 为单选组按钮

    3.在构造方法为每个组件及容器申请内存空间

    4.设置窗口的布局为网格布局,有4行1列

    5.将所有组件添加到容器中,将单选按钮再次添加到ButtonGroup,再添加容器到窗口

    6.实现ItemListener接口,并实现itemStateChanged方法,在方法判断事件源,根据用户选择进行算术运算,将计算结果显示到第三个输入框。添加给事件源添加监听。

    7.捕获输入错误时的异常NumberFormatException,并给出错误提示到输入框中。

    代码

    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.*;
    
    
    public class CaculateDemo extends JFrame implements ItemListener{
    //在类中添加窗口组件作为类的成员变量
    //JLabel文本
        JLabel j11,j12,j13;
    //JTextField为输入框
        JTextField jtf1,jtf2,jtf3;
    //JPanel为容器
        JPanel jp1,jp2,jp3,jp4;
    //JRadioButton为单选按钮
        JRadioButton j1,j2,j3,j4;
    //ButtonGroup 为单选组按钮
        ButtonGroup gd;
    
        CaculateDemo(){
    //在构造方法为每个组件及容器申请内存空间
            super("计算器");
            j11=new JLabel("操作数1");
            j12=new JLabel("操作数2");
            j13=new JLabel("计算结果是:");
                
            jtf1=new JTextField(10);
            jtf2=new JTextField(10);
            jtf3=new JTextField(10);    
            
            jp1=new JPanel();
            jp2=new JPanel();
            jp3=new JPanel();
            jp4=new JPanel();
            
            j1=new JRadioButton("+");
            j2=new JRadioButton("-");
            j3=new JRadioButton("*");
            j4=new JRadioButton("/");
            
            gd=new ButtonGroup();
            
        }
        public void init(){
            this.setSize(300,300);
            this.setLocation(100,100);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
            this.setLayout(new GridLayout(4,1));
            
            jp1.setLayout(new FlowLayout(FlowLayout.LEFT));
            jp2.setLayout(new FlowLayout(FlowLayout.LEFT));
            jp3.setLayout(new FlowLayout(FlowLayout.LEFT));
            jp4.setLayout(new FlowLayout(FlowLayout.LEFT));
            
            //在容器1中加文本,输入框
            jp1.add(j11);
            jp1.add(jtf1);
            //在容器2中加文本,输入框
            jp2.add(j12);
            jp2.add(jtf2);
            
            jp3.add(j1);
            jp3.add(j2);
            jp3.add(j3);
            jp3.add(j4);
            
            gd.add(j1);
            gd.add(j2);
            gd.add(j3);
            gd.add(j4);
            
            //在容器4中加文本,输入框
            jp4.add(j13);
            jp4.add(jtf3);
            
            
            this.add(jp1);
            this.add(jp2);
            this.add(jp3);
            this.add(jp4);
            
            //添加给事件源添加监听
            j1.addItemListener(this);
            j2.addItemListener(this);
            j3.addItemListener(this);
            j4.addItemListener(this);
        }
        
        public static void main(String[] args) {
            new CaculateDemo().init();
        
        }
        //实现itemStateChanged方法
        @Override
        public void itemStateChanged(ItemEvent e) {
            
            
                try{
                double num1=Double.parseDouble(jtf1.getText());
                double num2=Double.parseDouble(jtf2.getText());
                double res=0;
                
                if(e.getSource()==j1){
                    res=num1+num2;
                }else if(e.getSource()==j2){
                    res=num1-num2;
                }else if(e.getSource()==j3){
                    res=num1*num2;
                }else if(e.getSource()==j4){
                    res=num1/num2;
                }
                jtf3.setText(res+"");
                }
                //捕获输入错误时的异常NumberFormatException,并给出错误提示到输入框中
            catch(NumberFormatException eee){
                jtf3.setText("请输入数字");
            }
        }
    }
    

    运行结果图

    图片

    小礼物走一走 or 点赞

    图片

    相关文章

      网友评论

        本文标题:第十五节:事件实验

        本文链接:https://www.haomeiwen.com/subject/fkvtvftx.html