MenuItemをクリックしたときにMenuBarの自動クローズを無効にできるかどうかを確認したいですか?チェックボックスのようなMenuItemがいくつかあるので、複数のMenuItemをチェックでき、1つをチェックするたびにメニューを閉じたくありません。
ありがとう。
MenuItemをクリックしたときにMenuBarの自動クローズを無効にできるかどうかを確認したいですか?チェックボックスのようなMenuItemがいくつかあるので、複数のMenuItemをチェックでき、1つをチェックするたびにメニューを閉じたくありません。
ありがとう。
私は同じ問題に直面していました、そして私はあなたと私の解決策を共有します:
1)MenuItemを拡張する新しいクラスMyMenuItemWithCheckBoxを作成します。コンストラクターで、要素IDを(たとえば)menuItemWIthCheckBox+一意のテキストに設定します。this.getElement()。setId( "menuItemWithCheckBox_" + menuItemLabel);
2)MenuBarを拡張する新しいクラスMyMenuBarを作成します。次の方法でonBrowserEventメソッドをオーバーライドします。
Override
public void onBrowserEvent(Event event) {
if (DOM.eventGetType(event) == Event.ONCLICK && getSelectedItem().getElement().getId().contains("CheckBox")) {
Scheduler.get().scheduleFinally(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
getSelectedItem().getScheduledCommand().execute();
}
});
event.stopPropagation();
} else {
super.onBrowserEvent(event);
}
}
これで、MenuItemのスケジュールされたコマンドが常に呼び出されますが、メニューcheckBoxアイテムの場合、メニューバーを閉じることはできません。
これがお役に立てば幸いです。このソリューションの作成に1日以上費やしています。:-)
まず、サブメニューを表示するポップアップパネルはMenuBarクラスでプライベートであるため、直接それは不可能です。
Buuut、そうする方法があります...
単純に、現在のMenuBar.javaコードをgooglesコードリポジトリからフェッチし、それをEclipsegwt-projectに含めます。
パッケージのデクラレーションなど、何も変更する必要はありません。ソースをプロジェクトに配置するだけで、コンパイル中にgwt-sdkの元のMenuBarクラスが置き換えられます(ホストされた開発モードでも機能します)。
次に、ポップアップのプロパティautoHide-Panelをfalseに設定するだけで、クリックしてもポップアップが消えないようにすることができます。
hideOnClick
menuItemsでfalseに設定できます
ここを参照してください。