IT干货网

用gui制作简易加法计算器

leader 2022年03月12日 编程设计 155 0

用gui制作简易加法计算器

本文用三种方式制作计算器。

原始方法

代码如下:

package com.cxf.gui.two; 
 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
public class Calculator { 
    public static void main(String[] args) { 
        Cal cal = new Cal(); 
    } 
} 
 
 
class Cal extends Frame{ 
    public Cal(){   // create function 
        TextField text1 = new TextField(10); 
        Label label = new Label("+"); 
        TextField text2 = new TextField(10); 
        Button eq = new Button("="); 
        TextField text3 = new TextField(10); 
 
        setLayout(new FlowLayout()); 
        add(text1); 
        add(label); 
        add(text2); 
        add(eq); 
        add(text3); 
        setVisible(true); 
        setLocation(400,400); 
        pack(); 
 
        //listener 
        eq.addActionListener(new MyListener(text1,text2,text3)); 
    } 
} 
 
class MyListener implements ActionListener{ 
    public TextField tt1,tt2,tt3; 
    public MyListener(TextField t1,TextField t2,TextField t3){ 
        tt1 = t1; 
        tt2 = t2; 
        tt3 = t3; 
    } 
    public void actionPerformed(ActionEvent e){ 
        int result = Integer.parseInt(tt1.getText()) + Integer.parseInt(tt2.getText()); 
        tt3.setText(""+result); //when text3 goes to tt3, tt3 changing results in text3 changing,they are the same thing 
        tt1.setText(""); 
        tt2.setText(""); 
    } 
} 

输出结果:

加号左右的方框中输入数字,点击等号后,等号右侧方框显示两数字相加结果。

上面的代码有三个类,分别用作主函数,界面,和监听事件。

界面调用监听事件,主函数调用界面。

用组合类的方法

代码:

package com.cxf.gui.three; 
 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
public class Calculator { 
    public static void main(String[] args) { 
        Cal cal = new Cal(); 
        cal.LoadCal(); 
    } 
} 
 
 
class Cal extends Frame { 
 
    public TextField text1,text2,text3; 
 
    public void LoadCal(){   // create function 
        text1 = new TextField(10); 
        Label label = new Label("+"); 
        text2 = new TextField(10); 
        Button eq = new Button("="); 
        text3 = new TextField(10); 
 
        setLayout(new FlowLayout()); 
        add(text1); 
        add(label); 
        add(text2); 
        add(eq); 
        add(text3); 
        setVisible(true); 
        setLocation(400,400); 
        pack(); 
 
        //listener 
        eq.addActionListener(new MyListener(this)); 
    } 
} 
 
class MyListener implements ActionListener { 
    public Cal cal1; 
    public MyListener(Cal cal){ //combining another class ,which means example as a variable. 
        cal1 = cal; 
    } 
    public void actionPerformed(ActionEvent e){ 
        int result = Integer.parseInt(cal1.text1.getText()) + Integer.parseInt(cal1.text2.getText()); 
        cal1.text3.setText("" + result); //when text3 goes to tt3, tt3 changing results in text3 changing,they are the same thing. 
        cal1.text2.setText(""); 
        cal1.text1.setText(""); 
    } 
} 

输出结果与原始方法相同。

这个方法与原始方法的不同之处在于,原始方法把界面的属性传递给监听事件,这个方法把界面对象传递给了监听事件。

这个方法与原始方法相比,更富含类的思想。

用内部类的方法

代码如下:

package com.cxf.gui.four; 
 
 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
 
public class Calculator { 
    public static void main(String[] args) { 
        Cal cal = new Cal(); 
        cal.LoadCal(); 
    } 
} 
 
class Cal extends Frame { 
 
    public TextField text1,text2,text3; 
 
    public void LoadCal(){   // create function 
        text1 = new TextField(10); 
        Label label = new Label("+"); 
        text2 = new TextField(10); 
        Button eq = new Button("="); 
        text3 = new TextField(10); 
 
        setLayout(new FlowLayout()); 
        add(text1); 
        add(label); 
        add(text2); 
        add(eq); 
        add(text3); 
        setVisible(true); 
        setLocation(400,400); 
        pack(); 
 
        //listener 
        eq.addActionListener(new MyListener()); 
    } 
    private class MyListener implements ActionListener { 
        public void actionPerformed(ActionEvent e){ 
            int result = Integer.parseInt(text1.getText()) + Integer.parseInt(text2.getText()); 
            text3.setText("" + result); //when text3 goes to tt3, tt3 changing results in text3 changing,they are the same thing. 
            text2.setText(""); 
            text1.setText(""); 
        } 
    } 
} 
 

输出结果与前两个方法相同。

这个方法中,监听事件成为了界面的内部类,这让监听事件更容易获取界面的信息。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

事件监听