1.事件监听(按钮)
当某个事件发生时,要干什么。
1.一个按钮(点击按钮start输出“aaa”)
package clh.gui.test;
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 testframe {
public static void main(String[] args) {
Frame frame = new Frame("我的第一个java图形界面窗口");
Button button1 = new Button("start");
MyActionListener myActionListener = new MyActionListener();
button1.addActionListener(myActionListener);
frame.add(button1,BorderLayout.CENTER);
frame.pack();//java函数!自动整合更美观
//可视化
frame.setVisible(true);
//关闭窗口
windowClose(frame);
}
//监听关闭窗口
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing (WindowEvent e){
System.exit(0);
}
});
}
}
//事件监听
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("aaa");
}
}
结果:
2.两个按钮(获取按钮信息进行处理)
package clh.gui.test;
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 testframe {
public static void main(String[] args) {
Frame frame = new Frame("我的第一个java图形界面窗口");
Button button1 = new Button("start");
Button button2 = new Button("stop");
MyMonitor myMonitor = new MyMonitor();
button1.addActionListener(myMonitor);
button2.addActionListener(myMonitor);
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.SOUTH);
frame.pack();//java函数!自动整合更美观
//可视化
frame.setVisible(true);
//关闭窗口
windowClose(frame);
}
//监听关闭窗口
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing (WindowEvent e){
System.exit(0);
}
});
}
}
//两个按钮
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//e.getActionCommand()获得按钮的信息
System.out.println("按钮被点击了=>"+e.getActionCommand());
if(e.getActionCommand().equals("start")){
System.out.println("点击了start");
}
if(e.getActionCommand().equals("stop")){
System.out.println("点击了stop");
}
}
}
结果:
2.输入文本框TextFile监听
package clh.gui.test;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class textfile {
public static void main(String[] args) {
new MyFrame();
}
}
class MyFrame extends Frame {
public MyFrame(){
TextField textField = new TextField();
add(textField);
//监听这个文本框输入的文字
MyActionListener2 myActionListener2 = new MyActionListener2();
//按下enter就会触发这个输入框的事件
textField.addActionListener(myActionListener2);
//设置替换编码
textField.setEchoChar('*');
setVisible(true);
pack();
}
}
class MyActionListener2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
TextField filed = (TextField) e.getSource();//获得一些资源
System.out.println(filed.getText());
filed.setText("");//null
}
}
简化方法:(简易计算器a+b=c)
package clh.gui.test;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class easyjisuanqi {
public static void main(String[] args) {
new Calulator().loadFrame();
}
}
//计算器类
class Calulator extends Frame{
//属性
TextField num1,num2,num3;
//方法
public void loadFrame(){
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(20);
Button button = new Button("=");
Label label = new Label("+");
button.addActionListener(new MyCalulatorListener());
//布局
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
pack();
setVisible(true);
}
//监听器类
//内部类的最大好处,就是可以畅通无阻地访问外部的属性和方法
private class MyCalulatorListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText(""+(n1+n2));
num1.setText("");
num2.setText("");
}
}
}
结果:
3.画笔
package clh.gui.test;
import java.awt.*;
public class testpaint {
public static void main(String[] args) {
new Mypaint().loadFrame();
}
}
class Mypaint extends Frame{
public void loadFrame(){
setBounds(200,200,600,500);
setVisible(true);
}
//画笔
@Override
public void paint(Graphics g){
g.setColor(Color.red);
//g.drawOval(100,100,100,100);
g.fillOval(100,100,100,100);//实心的圆
g.setColor(Color.green);
g.fillRect(150,200,200,200);
}
}
结果: