1

これが私がやりたいことです。次の 10 個の提案を表示するオプションを使用して、一度に 10 個の単語を提案するポップアップを作成しています。これを 11 項目の JPopupMenu として設計しました。10 件の提案と 1 つの [もっと見る...] オプション。

ここに画像の説明を入力

「もっと見る...」で実行されるコードは、以前のすべての項目を削除し、新しい項目を追加します (簡単です)。

問題は、「もっと表示...」を押すと JPopupMenu が閉じることです (これがデフォルトの動作だと思います)。まったく新しいポップアップを作成して同じ場所に表示することによっても、これを回避しようとしました。

項目の 1 つを押したときに JPopupMenu が消えないようにする簡単な方法はありますか? 前もって感謝します!

4

1 に答える 1

0

チェックボックス項目にこれを使用しています:

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComponent;
import javax.swing.MenuSelectionManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicCheckBoxMenuItemUI;

public class StayOpenCheckBoxMenuItemUI extends BasicCheckBoxMenuItemUI {

    @Override
    protected void doClick(MenuSelectionManager msm) {
        menuItem.doClick(0);
    }

    public static ComponentUI createUI(JComponent c) {
        return new StayOpenCheckBoxMenuItemUI();
    }

}

次に、それを登録します。

myJCheckBoxMenuItem.setUI(new StayOpenCheckBoxMenuItemUI());

「もっと見る」項目がどのタイプのメニュー項目であるかに応じて、同様の解決策が機能するはずです。の代わりに適切な UI をサブクラス化するだけですBasicCheckBoxMenuItemUI

于 2013-03-28T12:49:03.947 に答える