2017-12-14 20 views
0

の取り扱い以下です。 問題は特に、メニューアイテムをクリックすると、の代わりにMilvaLabActionEventが書き込まれます。 コード:Costumイベント私は私がオフに取り除くためにしようとしています発行

Eventクラス

package jpt.gui.items; 

import javafx.event.ActionEvent; 

public class MilvaLabActionEvent extends ActionEvent { 
    private static final long serialVersionUID = 6757067652205246280L; 

    private String actionCommand =""; 

    public MilvaLabActionEvent(String actionCommand2) { 
     setActionCommand(actionCommand2); 
    } 

    public MilvaLabActionEvent() {} 

    public String getActionCommand() { 
     return actionCommand; 
    } 

    public void setActionCommand(String actioncommand) { 
     this.actionCommand = actioncommand; 
    } 
} 

私のEventHandler:

package jpt.gui.items; 

import javafx.event.EventHandler; 
import jpt.MilvaLabGlobal; 
import jpt.MilvaLabKonst; 
import jpt.handle.MilvaLabDateiHandle; 
import jpt.handle.MilvaLabEinHandle; 
import jpt.handle.MilvaLabHilfeHandle; 
import jpt.handle.MilvaLabMilvaHandle; 
import jpt.handle.MilvaLabRvAnwendungHandle; 
import jpt.handle.MilvaLabrvTextHandle; 
import jpt.log4j.MilvaLabLogger; 

public class MilvaLabEventHandler implements EventHandler<MilvaLabActionEvent>{ 

    @Override 
    public void handle(MilvaLabActionEvent event) {  
     // the command string of the menu item 
     final String sCmd = event.getActionCommand(); 

     if (sCmd.charAt(0) == 'M') 
     {//doing something here 
     } 
} 

costumのMenuItemクラス私は、ライトを得た考え出しました。

package jpt.gui.items; 

import javafx.event.Event; 
import javafx.scene.control.MenuItem; 

public class MilvaLabMenuItem extends MenuItem { 
    private String actionCommand; 

    public MilvaLabMenuItem(String sText) { 
     this.setText(sText); 
    } 
    @Override 
    public void fire() { 
     Event.fireEvent(this, new MilvaLabActionEvent(getActionCommand())); 

    } 

    public String getActionCommand() { 
     return actionCommand; 
    } 
    public void setActionCommand(String actionCommand) { 
     this.actionCommand = actionCommand; 
    } 
} 

そしてcostumのMenuItemの初期化:

final MilvaLabMenuItem jmi = new MilvaLabMenuItem("I am a menuItem"); 
     jmi.addEventHandler(evtype, new MilvaLabEventHandler()); 
     jmi.setOnAction((event) -> { 
      System.out.print("I have fired an ActionEvent!"); 
     }); 

まあ、私はMilvaLabMenuItemをクリックすると、今のように、私は「私はのActionEventを解雇している」しまった、他には何も起こりません。 (すでにデバッガを使っていることがわかりました)。 私は、明らかに、MilvaLabEventHandlerが呼び出されます。

答えて

0

私はもう一度考え出しました。 私は2つのEventTypesと宣言しましたが、1つしか必要ありませんでした。

これは私が解決策を見つけるのに役立ちましたが、の代わりにNodesを使用しました。 How to emit and handle custom events?