import java.awt.*;
import java.awt.event.*;
public class TFActionEvent {
public static void main(String[] args) {
new TFFrame();
}
}
class TFFrame extends Frame {
TFFrame() {
TextField tf = new TextField();
add(tf);
tf.addActionListener(new TFActionListener());
pack();
setVisible(true);
}
}
class TFActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
TextField tf = (TextField)e.getSource();
System.out.println(tf.getText());
tf.setText("");
}
}
这段小程序最重要的部分在于,我需要将TFFrame类中的tf相关信息传到TFActionListener中,这样才能使用tf对象的一些方法,比方说获取其文本框的内容,修改其文本框的内容等等,但是tf是另一个类的对象,并不是TFActionListener类中的对象,如何获取呢?之前也说到了,actionPerformed传入的参数是一个对象,这个对象中有事件发生的所有信息,其中就有getSource方法,可以返回发生事件的对象,但是返回的是一个Object类型的对象,需要强制转换为TextField
import java.awt.*;
import java.awt.event.*;
public class TFActionEvent2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new TFFrame();
}
}
class TFFrame extends Frame {
TFFrame() {
TextField tf = new TextField();
add(tf);
tf.addActionListener(new TFActionListener());
tf.setEchoChar('*');
pack();
setVisible(true);
}
}
class TFActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
TextField tf = (TextField)e.getSource();
System.out.println(tf.getText());
tf.setText("");
}
}
这个程序跟上一个程序差不多,就多了一行代码tf.setEchoChar('*'),这个方法的作用是设置回显字符,就是你输入的字符,全部用该方法内的字符来替代,比方说我们平时输入密码,就由星号替代
import java.awt.*;
import java.awt.event.*;
public class TFMath {
public static void main(String[] args) {
new TFFrame1().launchFrame();
}
}
class TFFrame1 extends Frame {
TextField num1,num2,num3;
public void launchFrame() {
num1 = new TextField(10);//10字符宽
num2 = new TextField(10);
num3 = new TextField(15);
Label lblplus = new Label("+");
Button btnEqual = new Button("=");
btnEqual.addActionListener(new MyMonitor(num1,num2,num3));
setLayout(new FlowLayout());
add(num1);
add(lblplus);
add(num2);
add(btnEqual);
add(num3);
pack();
setVisible(true);
}
}
class MyMonitor implements ActionListener {
TextField num1,num2,num3;
public 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());
num3.setText("" + (n1+n2));
}
}
import java.awt.*;
import java.awt.event.*;
public class TFMath {
public static void main(String[] args) {
new TFFrame1().launchFrame();
}
}
class TFFrame1 extends Frame {
TextField num1,num2,num3;
public void launchFrame() {
num1 = new TextField(10);//10字符宽
num2 = new TextField(10);
num3 = new TextField(15);
Label lblplus = new Label("+");
Button btnEqual = new Button("=");
btnEqual.addActionListener(new MyMonitor(this));
setLayout(new FlowLayout());
add(num1);
add(lblplus);
add(num2);
add(btnEqual);
add(num3);
pack();
setVisible(true);
}
}
class MyMonitor implements ActionListener {
TFFrame1 tf = null;
MyMonitor(TFFrame1 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.*;
import java.awt.event.*;
public class TFMath {
public static void main(String[] args) {
new TFFrame1().launchFrame();
}
}
class TFFrame1 extends Frame {
TextField num1,num2,num3;
public void launchFrame() {
num1 = new TextField(10);//10字符宽
num2 = new TextField(10);
num3 = new TextField(15);
Label lblplus = new Label("+");
Button btnEqual = new Button("=");
btnEqual.addActionListener(new MyMonitor());
setLayout(new FlowLayout());
add(num1);
add(lblplus);
add(num2);
add(btnEqual);
add(num3);
pack();
setVisible(true);
}
private class MyMonitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1+n2));
}
}
}
import java.awt.*;
public class TestPaint {
public static void main(String[] args) {
new PaintFrame().launchFrame();
}
}
class PaintFrame extends Frame {
public void launchFrame() {
setBounds(200,200,640,480);
setVisible(true);
}
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.red);
g.fillOval(50,50,30,30);
g.setColor(Color.green);
g.fillRect(80,80,40,40);
g.setColor(c);
}
}
主函数中并没有调用paint方法,但是其实仔细看上面的说明就会知道,每次重画的时候都会自动调用paint方法,什么时候会重画,比方说先把这个窗口隐藏,然后再显示这个窗口,或者创建这个窗口的时候,都会重画。使用Graphics 对象的时候,就把这个对象当作一个“画笔”去理解。最下面有一行将画笔颜色重新设为c,这个是编程的一个好习惯,叫重设现场
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有