MenuItem opt1 = new MenuItem("Opt1");
MenuItem opt2= new MenuItem("Opt2");
MenuButton menu = new MenuButton("Menu");
menu.getItems.(opt1,opt2);
VBox mmm= new VBox();
mmm.getChildren.add(menu);
MenuItem subOpt1= new MenuItem("SubOpt1");
MenuItem subOpt2= new MenuItem("SubOpt2");
MenuButton sbuMenu = new MenuButton("subMenu");
menu.getItems.(SubOpt1,SubOpt2);
MenuItem subOpt001= new MenuItem("SubOpt001");
MenuItem subOpt002= new MenuItem("SubOpt002");
MenuButton subMenu00 = new MenuButton("subMenu00");
menu.getItems.(SubOpt001,SubOpt002);
opt1.setOnAction(e->{
if(e.getSource==opt1)
mmm.getChildren.add(subMenu);
})
opt1.setOnAction(e->{
if(e.getSource==opt2)
mmm.getChildren.add(subMenu00);
})
Dann habe ich die App laufen und zeigt nur das Menü der MenuItem, und nichts anderes auftaucht. Eine andere Methode, die ich verwende, ist, dass eine globale Variable MenuButton sub
deklariert wird und der Wert sich ändert, wenn sich die Aktion auf MenuItem opt1
und opt2
ändert. Dann mit einer vbox zu .addAll(menu,sub)
, und Fehler zeigt java.lang.reflect.InvocationTargetException
.JavaFX: Wie anders MenuItems in einem MenuButton erhalten, wenn die Option Änderungen in einem anderen MenuButton
Wie anders MenuItems in einem MenuButton, wenn die Option Änderungen in einem anderen MenuButton
Wahrscheinlich verursacht durch Ändern eines Menüs, das angezeigt wird. Möglicherweise können Sie einen Workaround durchführen, indem Sie nur die Elemente aktivieren, auf die Sie Zugriff haben sollten. Außerdem wäre es besser, diesen Status des Menüs mit 'CheckMenuItem' /' RadioMenuItem' darzustellen. Übrigens: Da Sie den 'onAction'-Handler von 'opt1' durch einen Handler ersetzen, der prüft, ob die Quelle 'opt2' ist, sollten Sie keine Effekte wie die beschriebenen sehen. – fabian
Vielleicht kann ein 'menuButton' von einem anderen mit' .setVisible() 'abgedeckt werden, aber es scheint, dass es keine Möglichkeit gibt, einen Button mit einem anderen zu bedecken? Oder gibt es einen bestimmten Bereich, der dies möglich macht? Nachdem ich diese Lösungen gefunden hatte, versuchte ich es und scheiterte. Der gleiche Grund von dem, was @fabian sagte, ich ändere den angezeigten Bereich. 'Image.setVisible()' funktioniert jedoch, nachdem der Bereich angezeigt wurde. Warum und wie kann ich das reparieren ???? Außerdem verwende ich 'VBox', um diese menuButtons zu enthalten, und das' .setLayOutX/Y' funktioniert nicht, das 'menuButton' kann nicht abgedeckt werden. Irgendein Rat?? –
Es ist so, als wären Sie in der Station und wählen Sie den Startplatz und das Ende. Zuerst geben Sie die Linien, die sie haben, und dann basierend auf der Linie, die Sie gewählt haben, können Sie nur die Position auf dieser Linie sehen. Wie kann das funktionieren ??? –