我有TabPane
两个选项卡,每个选项卡TableView
都有一个上下文菜单。这两个上下文菜单具有重复的加速器,但是我希望只有当前选择的选项卡才能响应。但是Tab
,即使未选择最后添加的事件,似乎也会发生该事件。以下是完整的示例代码:
package sample;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.KeyCombination;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Tab t1 = new Tab("Tab 1");
TableView<Void> tv1 = new TableView<>();
t1.setContent(tv1);
MenuItem mi1 = new MenuItem("Action 1");
mi1.setAccelerator(KeyCombination.valueOf("F3"));
mi1.setOnAction(event->System.out.println("Action 1!"));
ContextMenu ctx1 = new ContextMenu(mi1);
tv1.setContextMenu(ctx1);
Tab t2 = new Tab("Tab 2");
TableView<Void> tv2 = new TableView<>();
t2.setContent(tv2);
MenuItem mi2 = new MenuItem("Action 2");
mi2.setAccelerator(KeyCombination.valueOf("F3"));
mi2.setOnAction(event->System.out.println("Action 2!"));
ContextMenu ctx2 = new ContextMenu(mi2);
tv2.setContextMenu(ctx2);
TabPane tabPane = new TabPane(t1, t2);
tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
primaryStage.setScene(new Scene(tabPane));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我希望“行动1”!选择选项卡1和“动作2!”时打印 选择选项卡2时打印,但在现实中“行动2”!无论选择哪个标签,都会打印。如何解决此问题,以便根据当前可见的选项卡(TableView)执行正确的操作?
我猜您遇到过https://bugs.openjdk.java.net/browse/JDK-8088068(有关替代方法,请参见此处)。JavaFX并没有真正为将相同的加速器安装在多个MenuItem中做准备。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句