- Java code
import java.awt.*;import java.awt.event.*;public class AWT_Math { public static void main(String[] args){ new TFrame().launchFrame(); }}class TFrame extends Frame { TextField num1,num2,num3; public void launchFrame(){ TextField num1 = new TextField(10); TextField num2 = new TextField(10); TextField num3 = new TextField(15); Label LaPlus = new Label("+"); Button buqual = new Button("="); buqual.addActionListener(new MyMonitor(this)); setLayout(new FlowLayout()); add(num1); add(LaPlus); add(num2); add(buqual); add(num3); pack(); setVisible(true); }}class MyMonitor implements ActionListener{ 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()); tf.num3.setText(""+(n1+n2)); }}
我是按网上的视频敲的,跟原文一样,但就是有错!!!
------解决方案--------------------------------------------------------
很简单啊,你在TFrame类里定义了全局变量num1、num2、num3;但是,你在launchFrame()方法中,定义了同名的局部变量,当然会报Nullexception
- Java code
public class AWT_Math { public static void main(String[] args) { new TFrame().launchFrame(); }}class TFrame extends Frame { TextField num1, num2, num3; public void public class AWT_Math { public static void main(String[] args) { new TFrame().launchFrame(); }}class TFrame extends Frame { TextField num1, num2, num3; public void launchFrame() { num1 = new TextField(10); num2 = new TextField(10); num3 = new TextField(15); Label LaPlus = new Label("+"); Button buqual = new Button("="); buqual.addActionListener(new MyMonitor(this)); setLayout(new FlowLayout()); add(num1); add(LaPlus); add(num2); add(buqual); add(num3); pack(); setVisible(true); }}class MyMonitor implements ActionListener { TFrame tf = null; public MyMonitor(TFrame tf) { this.tf = tf; } public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(tf.num1.getText()); int n2 = Integer.parseInt(tf.num2.getText()); tf.num3.setText("" + (n1 + n2)); }} { num1 = new TextField(10); num2 = new TextField(10); num3 = new TextField(15); Label LaPlus = new Label("+"); Button buqual = new Button("="); buqual.addActionListener(new MyMonitor(this)); setLayout(new FlowLayout()); add(num1); add(LaPlus); add(num2); add(buqual); add(num3); pack(); setVisible(true); }}class MyMonitor implements ActionListener { TFrame tf = null; public MyMonitor(TFrame tf) { this.tf = tf; } public void actionPerformed(ActionEvent e) { int n1 = Integer.parseInt(tf.num1.getText()); int n2 = Integer.parseInt(tf.num2.getText()); tf.num3.setText("" + (n1 + n2)); }}
------解决方案--------------------------------------------------------
路过,呵呵上面正解,顶一下
------解决方案--------------------------------------------------------
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AWT_Math {
public static void main(String[] args){
new TFrame().launchFrame();
}
}
class TFrame extends Frame {
TextField num1,num2,num3;
public void launchFrame(){