2

MenuItemをクリックしたときにMenuBarの自動クローズを無効にできるかどうかを確認したいですか?チェックボックスのようなMenuItemがいくつかあるので、複数のMenuItemをチェックでき、1つをチェックするたびにメニューを閉じたくありません。

ありがとう。

4

3 に答える 3

0

私は同じ問題に直面していました、そして私はあなたと私の解決策を共有します:

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日以上費やしています。:-)

于 2018-12-21T08:10:19.340 に答える
-1

まず、サブメニューを表示するポップアップパネルはMenuBarクラスでプライベートであるため、直接それは不可能です。

Buuut、そうする方法があります...

単純に、現在のMenuBar.javaコードをgooglesコードリポジトリからフェッチし、それをEclipsegwt-projectに含めます。

パッケージのデクラレーションなど、何も変更する必要はありません。ソースをプロジェクトに配置するだけで、コンパイル中にgwt-sdkの元のMenuBarクラスが置き換えられます(ホストされた開発モードでも機能します)。

次に、ポップアップのプロパティautoHide-Panelをfalseに設定するだけで、クリックしてもポップアップが消えないようにすることができます。

于 2011-08-03T08:07:13.500 に答える
-1

hideOnClickmenuItemsでfalseに設定できます

ここを参照してください。

于 2012-08-30T16:56:28.610 に答える