javaseday26(gui基本结构 事件监听)

Frame f= new Frame();
// f.setSize(500, 400);//第一个是横轴 第二纵轴 第一个一般都长点
// f.setLocation(400, 100);
f.setBounds(400, 200, 500, 400);
f.setLayout(new FlowLayout());//设置流式布局
Button b = new Button("一个按钮");
f.add(b);//将按钮添加到窗体中
f.setVisible(true);//方法中有斜线表示过时 这个是窗体显示

System.out.println("over");//frame 有个独立的线程

事件监听机制组成 

事件源 组件

事件 event

监听器 listener

事件处理 引发事件后处理方式


javaseday26(gui基本结构 事件监听)


// f.addWindowListener();//抽象类中 可以没有抽象方法 不让该类创建对象为了方便创建该接口的对象
f.addWindowListener(new WindowAdapter() {


@Override
public void windowClosing(WindowEvent e) {//按了后事件自动调用
System.exit(0);//关不关由事件处理方式决定 即这里面的内容
}


});//为了方便创建对象 没有内容覆盖一个即可
//按钮上加上一个监听 只要方法从3个开始都有适配器 以内就没有
b.addActionListener(new ActionListener() {

public class MouseAndKeyDemo {
private Frame f;
private TextField tf;
private Button b;
public MouseAndKeyDemo(){
init();
}
private void init() {
f= new Frame("监听");
f.setBounds(800, 200, 500, 300);
f.setLayout(new FlowLayout());
tf = new TextField(15);
b = new Button("按钮");
f.add(b);
f.add(tf);
myEvent();
f.setVisible(true);
}
private void myEvent() {
//给文本框添加键盘监听
tf.addKeyListener(new KeyAdapter() {


@Override
public void keyPressed(KeyEvent e) {
// System.out.println("keyrun..."+KeyEvent.getKeyText(e.getKeyCode()));
// int code = e.getKeyCode();
// if (!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)) {
// System.out.println("必须是数字");
// e.consume();//不会继续事件 即不会录入进去
// }


if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){//同时按下
System.out.println("enter run ");
}
}


});
f.addWindowListener(new WindowAdapter() {


@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}




});


b.addMouseListener(new MouseAdapter() {
private int count = 0;
@Override
public void mouseEntered(MouseEvent e) {
// System.out.println("mouse inter"+(count++));
tf.setText("mouse inter"+(count++));
}
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2)
tf.setText("mouse inter"+(count++));
}




});
}
public static void main(String[] args) {
new MouseAndKeyDemo();
}