【发布时间】:2014-04-23 12:01:48
【问题描述】:
有一个 ContextMenu 有两个选项,当用鼠标右键按下第二个选项(代码中的 item2)时,我希望它打印出一些文本,所以我知道我确实激活了它。到目前为止,当我单击第二个鼠标按钮时没有任何反应。
我还没有太多使用事件处理程序的经验,所以如果我犯了一个愚蠢的错误,我深表歉意。
private void maakContextMenu() {
menu = new ContextMenu();
MenuItem item = new MenuItem("Kleur Assen");
MenuItem item2 = new MenuItem("tweede optie");
final LissajousCanvas canvas = this;
item.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
new KiesKleur(canvas).show();
}
});
item2.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent t) {
System.out.println("in the loop");
if(t.getSource()==MouseButton.SECONDARY){
System.out.println("in too deep");
}
new KiesKleur(canvas).show();
}
});
menu.getItems().addAll(item, item2);
}
【问题讨论】:
-
这似乎是一个错误。在 JavaFX 问题跟踪器中搜索类似问题,您可能会从那里获得解决方法。不相关但代码中的另一个问题是 t.getSource()。应该是 t.getButton()。
标签: event-handling javafx