窗体三种事件JFrame

package com.swing;

import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;

import javax.swing.JFrame;

public class TestJFrame extends JFrame{
    
    
    public TestJFrame(){
        
        init();
        
        
    }
    
    public void init(){
        
        this.setSize(400,300);
        this.setTitle("第一个JFrame窗体");
        //this.setIconImage(image);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件,
                                                            //如果想复杂的处理话就要使用事件处理机制
        this.setResizable(false);//不能改变窗体大小
        this.setVisible(true);
        this.addWindowFocusListener(new MyFocus()); //注册一个窗体焦点的监听器
        
    }
    
    
    public static void main(String[] args) {
        
        new TestJFrame();
    }
    /*窗体三种事件:
     * 
     * 1. 焦点失去
     * 2. 开/关窗体
     * 3. 窗体状态,比如最大,最小,调整大小
     * 
     * 事件处理要用监听器来进行处理,监听器可以有四种写法
     * 1. 内置监听器(内部类的方式)        ------------------二选
     * 2. 自己监听自己,查看 TestJFrame1.java
     * 3. 外置监听器(外部类)TestJFrame2.java和MyFocus1.java
     * 4. 匿名类的使用(最麻烦的)TTestJFrame3.java ------------------首选
     *
     *  使用监听器可以发现监听器都是接口,实现其要实现多个方法,代码量大,代码不简洁
     *  所以可以使用适配器来解决监听器的问题,适配器其实就是空实现了三个接口的类
     *   WindowAdatper    TestJFrame5.java
     *
     *
     */
    
    //内部类,用处理于窗体焦点的监听器
    public class MyFocus implements WindowFocusListener{

        @Override
        public void windowGainedFocus(WindowEvent e) {
            // TODO Auto-generated method stub
            System.out.println("游戏正在进行.....");
        }

        @Override
        public void windowLostFocus(WindowEvent e) {
            // TODO Auto-generated method stub
            System.out.println("游戏暂停.....");
        }
        
        
        
    }

}

 

package com.swing;
/*
 * 
 * 
 * 该类用于演示,自已监听自己
 * 
 * 
 * 
 */



import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.awt.event.WindowListener;

import javax.swing.JFrame;

public class TestJFrame3 extends JFrame{
    
    
    public TestJFrame3(){
        
        init();
        
        
    }
    
    public void init(){
        
        this.setSize(400,300);
        this.setTitle("第一个JFrame窗体");
        //this.setIconImage(image);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件,
                                                            //如果想复杂的处理话就要使用事件处理机制
        this.setResizable(false);//不能改变窗体大小
        this.setVisible(true);
        this.addWindowFocusListener(
                
                new WindowFocusListener(){

                    @Override
                    public void windowGainedFocus(WindowEvent e) {
                        // TODO Auto-generated method stub
                        System.out.println("游戏正在进行.....");
                    }

                    @Override
                    public void windowLostFocus(WindowEvent e) {
                        // TODO Auto-generated method stub
                        System.out.println("游戏暂停.....");
                    }
                    
                    
                    
                }
        
        
        
        
        ); //注册一个窗体焦点的监听器
        
    }
    
    
    public static void main(String[] args) {
        
        new TestJFrame3();
    }
    

}
package com.swing;

import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.awt.event.WindowListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class TestJFrame4 extends JFrame{
    
    
    public TestJFrame4(){
        
        init();
        
        
    }
    
    public void init(){
        
        this.setSize(400,300);
        this.setTitle("第一个JFrame窗体");
        //this.setIconImage(image);
        this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件,
                                                            //如果想复杂的处理话就要使用事件处理机制
        this.setResizable(false);//不能改变窗体大小
        this.setVisible(true);
        this.addWindowListener(new MyListener());
        
    }
    
    
    public static void main(String[] args) {
        
        new TestJFrame4();
    }

    public class MyListener implements WindowListener{

        @Override
        public void windowActivated(WindowEvent e) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void windowClosed(WindowEvent e) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void windowClosing(WindowEvent e) {
            // TODO Auto-generated method stub
            //System.out.println("试图关闭时调用,this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);一起使用");
            //JOptionPane.showMessageDialog(null, "你要关闭窗体了", "警告", JOptionPane.WARNING_MESSAGE );
            int i = JOptionPane.showConfirmDialog(null, 
                    "你没有保存", "choose one", JOptionPane.YES_NO_CANCEL_OPTION);
             if(i==1){
                 JOptionPane.showMessageDialog(null, "你点了否", "警告", JOptionPane.WARNING_MESSAGE );
                 return;
             }
             if(i==2){
                 JOptionPane.showMessageDialog(null, "你点了取消", "警告", JOptionPane.WARNING_MESSAGE );
                 return;
             }
             if(i==0){
                 JOptionPane.showMessageDialog(null, "你点了是", "警告", JOptionPane.WARNING_MESSAGE );
                 System.exit(0);
             }

        }

        @Override
        public void windowDeactivated(WindowEvent e) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void windowDeiconified(WindowEvent e) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void windowIconified(WindowEvent e) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void windowOpened(WindowEvent e) {
            // TODO Auto-generated method stub
            
        }
        
        
        
    }
}
package com.swing;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;

import javax.swing.JFrame;

public class TestJFrame5 extends JFrame{
    
    
    public TestJFrame5(){
        
        init();
        
        
    }
    
    public void init(){
        
        this.setSize(400,300);
        this.setTitle("第一个JFrame窗体");
        //this.setIconImage(image);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件,
                                                            //如果想复杂的处理话就要使用事件处理机制
        //this.setResizable(false);//不能改变窗体大小
        //得到内容面板,相当画板上的纸
        
        Container contatiner = this.getContentPane();
        contatiner.setBackground(Color.BLUE);
        
        this.setVisible(true);
        this.addWindowListener(new WindowAdapter(){

            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                //super.windowClosing(e);
                System.out.println("adfsafsafafasf");
            }

            @Override
            public void windowStateChanged(WindowEvent e) {
                // TODO Auto-generated method stub
                //super.windowStateChanged(e);
                System.out.println("adfsafsafafasf");
            }

            @Override
            public void windowOpened(WindowEvent e) {
                // TODO Auto-generated method stub
                System.out.println("ddddddddddddddddd");
            }

            @Override
            public void windowLostFocus(WindowEvent e) {
                // TODO Auto-generated method stub
                System.out.println("dddddddddaaaaaaaaaaaaaaadddddddd");
            }

            @Override
            public void windowActivated(WindowEvent e) {
                // TODO Auto-generated method stub
                System.out.println("dddddddddaaaaaaaaaaaaaaadddddddd");
            }
            
            
        });
        
    }
    
    
    public static void main(String[] args) {
        
        new TestJFrame5();
    }
    
}

 

posted @ 2012-10-20 09:46  邹晟  阅读(8181)  评论(0编辑  收藏  举报