2017-06-14 128 views
0

我有2個對象,我現在關心的是:一個控制器和一個創建事件的類。擴展ActionEvent?自定義事件,沒有自定義偵聽器?

我知道了所有的源類一個ActionListener變量,由控制器匿名的ActionListener對象和方法設置工作。

但我需要從源類早在控制器對數據的訪問。我能夠擴展EventListener並使用自定義EventObject,但對於一位數據來說似乎有點矯枉過正。

是否有一個簡單的方法來延長剛剛ActionEvent的創造,我可以在監聽器的actionPerformed()方法獲得一個額外的變量? ActionEvent的構造函數讓我感到困惑。

public class NotesEvent extends ActionEvent{ 
    public NotesEvent(Object source, int id, String command){ 
     super(source, id, command); 
    } 
} 

我不知道在實例化事件時需要傳遞什麼「標識符」。

也許我錯過了簡單的東西 - 我只曾經真的學會了使用自定義類圓形做到這一點,很長的路要走。

任何幫助,將不勝感激

+1

更具體的解釋和[MCVE]代碼可能會有助於提高我們對您的問題的理解和你的代碼非常。 –

+0

虐待現在添加一個 – NickW

+2

是否需要自定義事件類?聽起來您可以將常規的ActionEvent源代碼轉換爲您已知的源代碼,然後直接訪問其數據。 – VGR

回答

0

我做不向下轉換控制器自定義事件的錯誤,所以我想的ActionListener不會玩自定義事件不錯 - 但它似乎對(其中就是我最初以爲)

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 

public class Target { 
    ActionListener listener; 
    int data = 1; 

    public Target(){ 
     JButton b = new JButton("Press Me"); 

     b.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e){ 
       CustomEvent ce = new CustomEvent(data, Target.this, 0, "Command"); 
       if(listener != null) listener.actionPerformed(ce); 
      } 
     }); 
    } 

    public void setListener(ActionListener listener){ 
     listener = listener; 
    } 
} 

class CustomEvent extends ActionEvent{ 
    int data; 
    CustomEvent(int data, Object source, int id, String command){ 
     super(source, id, command); 
     this.data = data; 
    } 

    public int getData(){ 
     return data; 
    } 
} 

控制器類:

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 

public class Controller { 
    Target t = new Target(); 

    public static void main(String[] args){ 
     Controller c = new Controller(); 
    } 

    public Controller(){ 
     t.setListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       //here was my problem 
       System.out.println(((CustomEvent)e).getID()); 
      } 
     }); 
    } 
} 

我仍然不完全確信我應該傳遞給ACTI數據儘管onEvent構造函數。

希望以上明確什麼,我想實現(我知道這是不是在的UI顯示方面還算齊全。)

相關問題