Откройте JPopupMenu из открытого JComboBox

Я хотел бы изменить поведение поля со списком OOTB, чтобы заморозить его после щелчка правой кнопкой мыши (определить, какая кнопка была нажата, легко, так что это не главное) и открыть JPopupMenu вместо выбора этой записи.

Итак, как отключить выбор записи при заданном условии и затем использовать пользовательское поведение?

Я попытался начать с добавления слушателей мыши ко всем компонентам выпадающего списка, но безуспешно - ничего не изменилось

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class MainClass {

    public static void main(final String args[]) {

        final String labels[] = { "A", "B", "C", "D", "E" };
        JFrame frame = new JFrame("Selecting JComboBox");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JComboBox comboBox = new JComboBox(labels);
        frame.add(comboBox, BorderLayout.SOUTH);
        frame.setSize(400, 200);
        frame.setVisible(true);

        for (Component c : comboBox.getComponents()) {
            c.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    System.out.println("cli");
                    super.mouseClicked(e);
                }
                public void mousePressed(MouseEvent e) {
                    System.out.println("pre");
                    super.mousePressed(e);
                }
            });
        }
    }
}

person dantuch    schedule 28.06.2012    source источник
comment
чего именно вы хотите добиться, когда значение выбрано в поле со списком?   -  person David Kroukamp    schedule 28.06.2012


Ответы (1)


  • в Swing невозможно одновременно отображать два легких всплывающих окна

  • пример о всплывающем окне JComboBox из JPopup

  • есть грязный хак про установку JPopup в тяжеловес

  • но я бы предложил смешать AWT Container с Swing JComponents и использовать AWT.Popup с Swing.JComponent (JMenuItem или JButton)

person mKorbel    schedule 28.06.2012
comment
+1 Я поигрался, и да, ты прав, определенно бот возможен! - person David Kroukamp; 28.06.2012