1. 程式人生 > >Java事件處理機制-事件監聽器的四種實現方式

Java事件處理機制-事件監聽器的四種實現方式

自身類作為事件監聽器 :

Java程式碼:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 *Java事件處理機制:自身類作為事件監聽器
 *@author Winty([email protected])
 *@version 2008-12-3
 */
class ThisClassEvent extends JFrame implements ActionListener{
    JButton btn;

    public ThisClassEvent(){
        super("Java事件監聽機制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("點選");
        btn.addActionListener(this);
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

    /**************************************/
    public void actionPerformed (ActionEvent e){
        Container c=getContentPane();
        c.setBackground(Color.red);
    }
    /**************************************/

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

外部類作為事件監聽器 :

Java程式碼

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *Java事件處理機制:外部類作為事件監聽器
 *@author Winty([email protected])
 *@version 2008-12-3
 */
class OuterClassEvent extends JFrame{
    JButton btn;

    public OuterClassEvent(){
        super("Java事件監聽機制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("點選");
        btn.addActionListener(new OuterClass(this));
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

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

/*外部類*********************************/
class OuterClass implements ActionListener{
    OuterClassEvent oce;

    public OuterClass(OuterClassEvent oce){
        this.oce = oce;
    }

    public void actionPerformed(ActionEvent e){
        Container c=oce.getContentPane();
        c.setBackground(Color.red);
    }
}

匿名內部類作為事件監聽器 :

Java程式碼

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *Java事件處理機制:匿名內部類作為事件監聽器
 *@author Winty([email protected])
 *@version 2008-12-3
 */
class AnonymousEvent extends JFrame{
    JButton btn;

    public AnonymousEvent(){
        super("Java事件監聽機制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("點選");
        /*匿名內部類******************************/
        btn.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    Container c=getContentPane();
                    c.setBackground(Color.red);
                }
            }
        );
        /***************************************/
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

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

內部類作為事件監聽器:

Java程式碼:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *Java事件處理機制:內部類作為事件監聽器
 *@author Winty([email protected])
 *@version 2008-12-3
 */
class InnerClassEvent extends JFrame{
    JButton btn;

    public InnerClassEvent(){
        super("Java事件監聽機制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("點選");
        btn.addActionListener(new InnerClass());
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

    /*內部類*********************************/
    class InnerClass implements ActionListener{
        public void actionPerformed (ActionEvent e){
            Container c=getContentPane();
            c.setBackground(Color.red);
        }
    }
    /**************************************/

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

相關推薦

Java事件處理機制-事件監聽器實現方式

自身類作為事件監聽器 : Java程式碼: import javax.swing.*; import java.awt.*; import java.awt.event.*; /**  *Java事件處理機制:自身類作為事件監聽器  *@author Winty([ema

5.6-全棧Java筆記:內部類的實現方式

java一般情況,我們把類定義成獨立的單元。有些情況下,我們把一個類放在另一個類的內部定義,稱為內部類(innerclasses)。內部類的作用1.內部類提供了更好的封裝。只能讓外部類直接訪問,不允許同一個包中的其他類直接訪問。2.內部類可以直接訪問外部類的私有屬性,內部類被當成其外部類的成員。 但外部類不能

Java實現多線程的實現方式

lis star 維護 invoke 1.0 threads arraylist urn fix 以計算0到1000之間的和為例 import java.util.ArrayList; import java.util.LinkedList; import java.uti

Java併發程式設計(二)多執行緒實現方式

Java實現多執行緒的方式 Java實現多執行緒的方式有4種: 繼承Thread方法、實現Runnable介面、實現Callable介面並通過FutureTask建立執行緒、使用ExecutorService。 其中,前兩種執行緒執行結果沒有返回值,後兩種是有返回值的。 1、繼承Th

Java多執行緒之實現方式

介紹 繼承Thread類,並重寫其run方法 實現Runnable介面 實現Callable介面通過FutureTask包裝器來建立Thread執行緒 執行緒池,使用ExecutorService、Callable、Future實現有返回結果的多執行緒。 其

JAVA多執行緒的實現方式

1.繼承Thread  重寫run()方法,該run方法表示執行緒要完成的任務。建立執行緒物件,呼叫物件的start()方法來啟動執行緒。 2.Runnable介面 重寫介面中run方法。建立Runable例項類的例項,並依此例項作為Thread的target來建立Th

【連載】redis庫存操作,分散式鎖的實現方式[三]--基於Redis watch機制實現分散式鎖

一、redis的事務介紹 1、 Redis保證一個事務中的所有命令要麼都執行,要麼都不執行。如果在傳送EXEC命令前客戶端斷線了,則Redis會清空事務佇列,事務中的所有命令都不會執行。而一旦客戶端傳送了EXEC命令,所有的命令就都會被執行,即使此後客戶端斷線也沒關係,因為Redis中已經記錄了所有要執行的

Java多線程的實現方式

util println 通過 泛型 pri png 返回值 sch get 1.Java多線程實現的方式有四種:1.繼承Thread類,重寫run方法2.實現Runnable接口,重寫run方法,實現Runnable接口的實現類的實例對象作為Thread構造函數的targ

Java中對xml檔案的解析方式

books.xml <?xml version="1.0" encoding="utf-8"?> <bookstore> <book id="1"> <name>冰與火之歌</name>

JavaScript中的單體模式實現方式

ret div 劃分 scrip diff different 不同的 如果 get 1 /* 2 1 簡單單體 3 */ 4 var Singleton = { 5 attr1: 1 , 6 method1:funct

RxJS的另外實現方式(三)——性能最高的庫

如何 www table fas set export llb const events 接上篇 RxJS的另外四種實現方式(二)——代碼最小的庫(續) 代碼最小的庫rx4rx-lite雖然在性能測試中超過了callbag,但和most庫較量的時候卻落敗了,於是我下載了

最近在研究多線程,淺談JAVA中多線程的幾實現方式

進行 數據 使用 導致 效率問題 多線程 方法 sta img 多線程的實現方式:   個人認為,要說多線程的實現方式,萬變不離其宗,最基本的就是兩種1.繼承Thread類;2.實現runnable接口,本質上來說就是用來啟動線程執行任務的過程,具體來說的話,通過這

RxJS的另外實現方式(三)——效能最高的庫

程式碼最小的庫rx4rx-lite雖然在效能測試中超過了callbag,但和most庫較量的時候卻落敗了,於是我下載了most庫,要解開most庫效能高的原因。 我們先上一組測試資料,這是在我的windows10 上面跑的 dataflow for 10000

RxJS的另外實現方式(六)——使用Stream類實現

該實現方式與之前幾種不同的,該實現方式僅針對Nodejs環境。在Nodejs環境中,提供了Stream類,包括Readable、Transform、Writeable等子類都是可擴充套件的。從字面上看,正好對應Rx中的生產者、傳遞者、消費者。 實現該庫的起因是

斐波那契數列的實現方式(C語言)

斐波那契數列是一組第一位和第二位為1,從第三位開始,後一位是前兩位和的一組遞增數列, 像這樣的:1、1、2、3、5、8、13、21、34、55… 今天,我們用四種方式來進行實現: 1.遞迴 int Fibon1(int n) { if (n == 1 || n

【原創】redis庫存操作,分散式鎖的實現方式[連載一]--基於zookeeper實現分散式鎖

一、背景 在電商系統中,庫存的概念一定是有的,例如配一些商品的庫存,做商品秒殺活動等,而由於庫存操作頻繁且要求原子性操作,所以絕大多數電商系統都用Redis來實現庫存的加減,最近公司專案做架構升級,以微服務的形式做分散式部署,對庫存的操作也單獨封裝為一個微服務,這樣在高併發情況下,加減庫存時,就會出現超賣等

【原創】redis庫存操作,分布式鎖的實現方式[連載一]--基於zookeeper實現分布式鎖

zookeepe operation iat 並發 method logger 方案 nag 概念 一、背景 在電商系統中,庫存的概念一定是有的,例如配一些商品的庫存,做商品秒殺活動等,而由於庫存操作頻繁且要求原子性操作,所以絕大多數電商系統都用Redis來實現庫存的加減,

【原創】redis庫存操作,分散式鎖的實現方式[連載二]--基於Redisson實現分散式鎖

一、redisson介紹 redisson實現了分散式和可擴充套件的java資料結構,支援的資料結構有:List, Set, Map, Queue, SortedSet, ConcureentMap, Lock, AtomicLong, CountDownLatch。並且是執行緒安全的,底層使用N

內部類的實現方式

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> //成員內部類......相當於非靜態方法class MemberInner {

單例模式(Singleton Pattern)典型的實現方式

一、簡介: 引入百度百科對單例模式的介紹: 單例模式(Singleton Pattern)是一種常用的軟體設計模式。《設計模式》一書中對其介紹:“保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點。” 在某些時候,一個系統只有一個例項是很重要且必要的,比如:Wind