21天养成好习惯——第十一天
今天继续学习关于Java GUI的相关知识
事件监听
简单来说就是 对用户的点击事件(或其他事件)做出特定的反映
通过实例理解一下
package MyPanel;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class ActionEvent {
public static void main(String[] args) {
//按下按钮触发一些事件
Frame frame = new Frame("Test ActionEvent");
Button button = new Button("MyButton");
//因为 , addActionListener()需要一个ActionListener ,所以我们需要构造一个ActionListener
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button);
frame.pack();
windowClose(frame);
frame.setVisible(true);
}
public 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(java.awt.event.ActionEvent e) {
System.out.println("aaa");
}
}
运行结果: 当点击MyButton时会从终端输出aaa
小知识点:
Java的ActionEvent 类中的方法:getActionCommand()
这个方法返回的是事件源组件的“命令” , 这个“命令” 实际上就是事件源组件上的“Label(标签)字符串
实例二:
package MyPanel;
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 ActionEvent_2 {
public static void main(String[] args) {
//两个按钮实现(共享)同一个监听 , 如果按钮是Button1 则输出yes 如果是Button2 则输出no
Frame frame = new Frame("ActionEvent_2");
Button button1 = new Button("Button1");
Button button2 = new Button("Button2");
MyMonitor myMonitor = new MyMonitor();
button1.addActionListener(myMonitor);
button2.addActionListener(myMonitor);
frame.add(button1,BorderLayout.EAST);
frame.add(button2,BorderLayout.WEST);
button2.setActionCommand("not button1");//ActionCommand可以二次更改
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if ( e.getActionCommand().equals("Button1")){
System.out.println("yes: "+e.getActionCommand());
}else{
System.out.println("no: "+e.getActionCommand());
}
}
}
运行结果:
零碎知识
Interger.paresInt(string ): 方法用于将字符串参数作为有符号的十进制整数进行解析。
Interger.paresInt(string ,int); 第二个参数指定是几进制