制作思路:
①:先创建一个类,用来设置窗口以及窗口功能的实现
②:再创建一个事件监听器,用来监听当鼠标点击某个按钮的时候所需要发生的动作变化
③:最后在主函数(main函数)中实现自己创建的类
package First;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class _7_加法计算器 {
public static void main(String[] args) {
new JiaFaFrame("加法计算器");
}
}
class JiaFaFrame extends JFrame{
//创建标签 标签起注册说明的作用(例如可以是文字的说明)
JLabel lab, lab2;
//一个轻量级组件,它允许编辑单行文本
JTextField jtf1,jtf2,jtf3;
//创建按钮
JButton jbtn ;
//创建面板
JPanel jp1,jp2,jp3;
JiaFaFrame(String title){
super(title);
//创建组件
lab = new JLabel("加法计算器");
lab2 = new JLabel("+");
//10表示的是单行文本框的长度
jtf1 = new JTextField(10) ;
jtf2 = new JTextField(10) ;
jtf3 = new JTextField(10) ;
jbtn = new JButton("=");
jbtn.addActionListener(new MyMointor2());
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//设置布局管理器,添加组件
jp1.setLayout(new GridLayout(2,1));
this.add(jp1);//将面板1添加到窗体上
jp1.add(jp2);
jp1.add(jp3);
jp2.add(lab);
jp3.add(jtf1);
jp3.add(lab2);
jp3.add(jtf2);
jp3.add(jbtn);
jp3.add(jtf3);
//窗体的属性设置(前两个参数时位置,后两个参数是大小)
this.setBounds(300, 300, 700, 160);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
//内部类
class MyMointor2 implements ActionListener{
public void actionPerformed(ActionEvent e) {
//getText()方法返回的是String类型的字符串
String s1 = jtf1.getText();
String s2 = jtf2.getText();
//将字符串转换为数字
int n1 =Integer.parseInt(s1);
int n2 =Integer.parseInt(s2);
int n3 = n1 + n2 ;
//将数字转换为字符串(如下三种方法)
String s3 = String.valueOf(n3);
// String s3 = Integer.toString(n3);
// String s3 = n3+"";
jtf3.setText(s3);
}
}
}
在上面两个文本框中输入两个数字,然后点击等号”=“按钮,得到结果:
说明1:
标签的说明:
JLabel 用于创建标签 ,标签起注册说明的作用(例如可以是文字的说明)
JTextField 用于创建一个单行文本编辑框 ,是一个轻量级组件
JButton 用于创建一个按钮 ,一般配合事件监听器一起使用,这样当点击按钮的时候会发生一些动作。
JPanel 用于创建面板,多个面板可以设置多个布局,更方便的设计页面的布局
说明2:
在自己创建的类中:
首先创建自己所需要使用的东西(标签、文本框、按钮、面板等)
然后构造一个传一个参数的构造方法(用于传入制作窗口的名称)
然后创建组件(标签、文本框、按钮、面板等)
然后设置布局管理器(流式 、网格、边界)
然后将面板添加到窗体上与将组件添加到面板上
最后设置窗体的属性(位置、大小、关闭、可见性)
说明3:
创建事件监视器:
创建的事件监视器一定要实现(implements)某个事件所对应的接口(比如动作事件:ActionListener)
不同的事件对应不同的监视器,监视器与事件是一 一对应的
实现监视器的时候需要有一个方法(比如动作事件:actionPerformed()方法)
方法中都需要有一个参数(事件的参数)(比如动作事件 actionPerformed(ActionEvent e))
说明4:
自己创建的事件监听器时需要使用自己定义类的组件
那么就需要将事件监视器这个类作为内部类
而且需要在自己创建的类里面添加自己创建的监视器(例如上面代码中的 jbtn.addActionListener(new MyMointor2());)