java例程练习(简单的计算器[调停者 设计模式 及 内部类 ])

本文介绍了一个简单的Java GUI计算器程序示例,通过使用内部类来处理按钮点击事件,实现了两个文本框输入数字并显示加法结果的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.awt.*; import java.awt.event.*; public class TestInnerClass { public static void main(String[] args) { new TFFrame().launchFrame(); } } class TFFrame extends Frame { public void launchFrame() { TextField num1 = new TextField(10); TextField num2 = new TextField(10); TextField num3 = new TextField(15); Label lbPlus = new Label("+"); Button btnEqual = new Button("="); setLayout(new FlowLayout()); add(num1); add(lbPlus); add(num2); add(btnEqual); add(num3); btnEqual.addActionListener(new MyMonitor(num1, num2, num3)); pack(); setVisible(true); } } class MyMonitor implements ActionListener { TextField num1,num2,num3; MyMonitor(TextField num1, TextField num2, TextField num3) {//用构造函数实现 this.num1 = num1; this.num2 = num2; this.num3 = num3; } public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(num1.getText()); int n2 = Integer.parseInt(num2.getText()); int n3 = n1 + n2; num3.setText("" + n3); } }import java.awt.*; import java.awt.event.*; public class TestInnerClass { public static void main(String[] args) { new TFFrame().launchFrame(); } } class TFFrame extends Frame { public void launchFrame() { TextField num1 = new TextField(10); TextField num2 = new TextField(10); TextField num3 = new TextField(15); Label lbPlus = new Label("+"); Button btnEqual = new Button("="); setLayout(new FlowLayout()); add(num1); add(lbPlus); add(num2); add(btnEqual); add(num3); btnEqual.addActionListener(new MyMonitor(this/*num1, num2, num3*/)); pack(); setVisible(true); } } class MyMonitor implements ActionListener { // TextField num1,num2,num3; // MyMonitor(TextField num1, TextField num2, TextField num3) { // this.num1 = num1; // this.num2 = num2; // this.num3 = num3; // } //持有对方的引用 TFFrame tf = null; public MyMonitor(TFFrame tf) { this.tf = tf; } public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(tf.num1.getText()); int n2 = Integer.parseInt(tf.num2.getText()); int n3 = n1 + n2; tf.num3.setText("" + n3); } }import java.awt.*; import java.awt.event.*; public class TestInnerClass { public static void main(String[] args) { new TFFrame().launchFrame(); } } class TFFrame extends Frame { TextField num1, num2, num3; public void launchFrame() { num1 = new TextField(10); num2 = new TextField(10); num3 = new TextField(15); Label lbPlus = new Label("+"); Button btnEqual = new Button("="); setLayout(new FlowLayout()); add(num1); add(lbPlus); add(num2); add(btnEqual); add(num3); btnEqual.addActionListener(new MyMonitor()); pack(); setVisible(true); } //内部类:1,方便的访问包装类的成员 // 2,该类不允许或不需要其他类进行访问 class MyMonitor implements ActionListener { public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(num1.getText()); int n2 = Integer.parseInt(num2.getText()); int n3 = n1 + n2; num3.setText("" + n3); } } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值