内部类 更好的包装 访问 外部的属性和方法
package com.zym.lesson9; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class TestCalc3 { public static void main(String[] args) { new MCalculator3().LoadFrame(); } } //计算器类 class MCalculator3 extends JFrame { //属性 TextField num1,num2,num3; //方法 public void LoadFrame(){ //三个文本框 num1 = new TextField(10); num2 = new TextField(10); num3 = new TextField(20); //一个按钮 Button button = new Button("="); //直接new了一个监听器 button.addActionListener(new MyCalculatorListener3()); //一个标签 Label label = new Label("+"); //流式布局 setLayout(new FlowLayout()); //添加组件 add(num1); add(label); add(num2); add(button); add(num3); //自适应大小 pack(); //设置可见 setVisible(true); setTitle("计算器:内部类"); addWindowListener(new WindowAdapter() { //窗体关闭时做的事 @Override public void windowClosing(WindowEvent e) { System.exit(0); } } ); } //监听器类 //内部类最大的好处,畅通无阻的访问外部类的属性和方法 private class MyCalculatorListener3 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // 通过操作对象的属性 int n1 = Integer.parseInt(num1.getText()); int n2 = Integer.parseInt(num2.getText()); // 2 将这个值加法运行后,放到第三个框中 num3.setText("" + (n1 + n2)); // 3 清除前两个框 num1.setText(""); num2.setText(""); } } //构造器 public MCalculator3() { } }