窗體三種事件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();
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM