2

JComponent単にコントローラー ( ) とディスプレイ (JPopupMenu拡張機能)である「日付ピッカー」コンポーネントを作成しました。ユーザーが矢印で日付を制御するときに、表示ポップアップが表示されたままになるようにしたいと思います。ポップアップをリセットするためにボタンを呼び出してみましpopup.show(...)mouseReleasedが、その後いつものように非表示になりません。の通常の動作を維持しながら、どうすればこれを達成できJPopupMenuますか?

確かに を使用できますJWindowが、使用したフォーカスなどの表示/非表示の動作をエミュレートすることについて心配する必要がありJPopupMenuます。これは避けたいと思います。

ありがとうございました。:)

ここに画像の説明を入力

SSCCEE

import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class PopupSSCCE {

    private JFrame frame = new JFrame();
    private JPanel controller = new JPanel();
    private JLabel controllerLabel = new JLabel("Controller");
    private JLabel display = new JLabel("Display");
    private JPopupMenu popup = new JPopupMenu();
    private JButton prev = new JButton("<");
    private JButton next = new JButton(">");

    private PopupSSCCE() {
        controllerLabel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseReleased(MouseEvent e) {
                if (controllerLabel.contains(e.getPoint()))
                    popup.show(controllerLabel, -50, controllerLabel.getHeight());
            }
        });

        frame.setPreferredSize(new Dimension(250, 300));
        popup.setPreferredSize(new Dimension(200, 200));
        controller.setPreferredSize(new Dimension(200, 50));
        prev.setPreferredSize(new Dimension(50, 50));
        next.setPreferredSize(new Dimension(50, 50));
        controllerLabel.setPreferredSize(new Dimension(100, 50));

        controller.add(prev);
        controller.add(controllerLabel);
        controller.add(next);
        popup.add(display);
        frame.getContentPane().add(controller);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new PopupSSCCE();
    }
}
4

1 に答える 1

3
  • non_homeworkコードのベースとしてJPopupまたはコンテナを使用しないでください。Popup

  • Java4JComboBox、JMenu、JPopupMenu、詳細はこちらから「画面にポップアップを表示」を管理することはできません

  • Toedterによるexistおよびnon_buggyコード、またはkleopatraによって作成されたSwingXを使用します

  • 重要なのは、車輪の再発明を試みないことです

于 2012-05-27T06:27:48.710 に答える