2017-11-25 12 views
0
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); 


}) 

次に、私はこのアプリケーションを実行し、MenuItemメニューのみを表示します。 私が使用するもう1つの方法は、グローバル変数MenuButton subを宣言し、MenuItemで設定されたアクションが変更されると値が変更されます。opt1およびopt2が変更されます。その後、.addAll(menu,sub)にvboxを使用すると、エラーはjava.lang.reflect.InvocationTargetExceptionと表示されます。JAVAFX:別のMenuButtonでオプションが変更されたときにMenuButton内の別のMenuItemを取得する方法

時に別のメニューボタン

+0

おそらく、表示されているメニューを変更したことが原因です。おそらく、アクセス権を持つ必要があるアイテムのみを有効にすることで回避策を実行できます。さらに、 'CheckMenuItem' /' RadioMenuItem'を使ってメニューのこの状態を表現する方が適切です。ところで、 'opt1'の' onAction'ハンドラをチェックするハンドラで置き換えるので、ソースが 'opt2'ならば、記述されているような効果は見られません。 – fabian

+0

'menuButton'は' .setVisible() 'を使って別のもので覆われているかもしれませんが、別のボタンでカバーする方法がないようですね?または、特定のペインでこれを行うことができますか?解決策のように見えるこれらを思いついた後、私は試して失敗しました。 @ fabianが言ったのと同じ理由で、私は表示された枠を変更しています。しかし、 'image.setVisible()'はペインが表示された後に動作しています。どうすればこの問題を解決できますか?また、私は 'VBox'を使用してこれらのmenuButtonを保持し、' .setLayOutX/Y'は動作しません。 'menuButton'をカバーすることはできません。何かアドバイス?? –

+0

駅にいて、出発地と目的地を選ぶのと同じです。最初に持っているラインを与えてから、あなたが選んだラインに基づいて、このライン上の位置しか見ることができません。どのようにこれは動作できますか? –

答えて

0

セットでオプションの変更ごとに同じ場所でMenuButtonと第一MenuButtonMenuItemが選択されている場合、可視性を変更.setVisble()メニューボタンに異なるのMenuItemを取得する方法)あなたが隠して表示される他のMenuButtonsの、それは動作します。コメントにはDeatilsがあります。

関連する問題