JPopupMenu не появляется?

У меня есть апплет Java, который будет состоять из нескольких всплывающих меню, с которыми пользователю придется взаимодействовать. Однако JPopupMenu не будет отображаться при добавлении. Вот мой код:

public class Parser extends JApplet implements ActionListener {
    private static final long serialVersionUID = 1L;
    JPopupMenu deviceMenu;
    JButton downloadButton;
    Map <String, Object> deviceDict;

    public void init () {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    createGUI();
                }
            });
        } 
        catch (Exception e) { 
            System.err.println("createGUI didn't successfully complete");
        }
    }
    public void createGUI() {
        try {
            URL url = new URL("[URL]");
            URLConnection conn = url.openConnection();
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                    conn.getInputStream()));
            String inputLine;
            String xml = "";
            while ((inputLine = in.readLine()) != null) 
                xml = xml + inputLine;
        deviceDict = Plist.fromXml(xml);
        System.out.print(deviceDict);
        } 

        catch (XmlParseException e) {
            e.printStackTrace();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
        setLayout(new FlowLayout());
        setPreferredSize(new Dimension(480, 360));
        setSize(480, 360);
        Iterator <String> deviceIterator = deviceDict.keySet().iterator();
        deviceMenu = new JPopupMenu("Test");
        while (deviceIterator.hasNext()) {
            JMenuItem item = new JMenuItem(deviceIterator.next());
            deviceMenu.add(item);
        }
        add(deviceMenu);
    }
}

Есть идеи, почему?


person Jumhyn    schedule 14.05.2011    source источник
comment
используйте JComboBox, а не JPopupMenu   -  person MeBigFatGuy    schedule 15.05.2011


Ответы (2)


Когда вы хотите, чтобы он отображался?
Вам нужно вызвать show(), если вы хотите отобразить всплывающее меню.
См. это пример и с сайта оракула.

Кстати, из вашего вопроса кажется, что JDialog

person MByD    schedule 14.05.2011
comment
Я понимаю. Я был сбит с толку тем, что на самом деле делает JPopupMenu. Если я хочу, чтобы в шляпе меню была кнопка, при нажатии на которую отображается JPopupMenu, есть ли для этого объект или мне нужно просто сделать его кнопкой? - person Jumhyn; 15.05.2011
comment
Если я вас правильно понимаю, вам нужно будет создать каждый из них с помощью JMenuItem. - person MByD; 15.05.2011
comment
Я хочу, чтобы это выглядело так: i.imgur.com/VCal4.png , где нажатие на него покажет JPopupMenu. - person Jumhyn; 15.05.2011
comment
Этот называется JComboBox. - person MByD; 15.05.2011
comment
это JSpinner download.oracle.com/javase/tutorial/uiswing/components/ - person mKorbel; 15.05.2011
comment
@mKorbel - если я не слепой - это JComboBox :) - person MByD; 15.05.2011
comment
@MByD @mKorbel Я согласен с вами обоими, ребята, это JComboBox, который выглядит как JSpinner, поскольку это поле со списком, настроенное для Apple. :) - person Boro; 15.05.2011
comment
@MByD +1 за ответ и комментарии. Хорошая вещь. - person Boro; 15.05.2011
comment
@MByD, почему OP узнает функциональные возможности JPopupMenu для чего-то, что он / она хочет, и теперь мы голосуем, если это половина JComboBox / половина JSpinner :-) - person mKorbel; 15.05.2011
comment
@MByD это все, пожалуйста, мой друг. PS: ты как молния по всем вопросам. Ваше среднее время ответа составляет менее 5 минут. Молодец. :) - person Boro; 15.05.2011
comment
@Boro mKorbel - :D @Boro - Спасибо, я думаю, что я должен получить жизнь :) - person MByD; 15.05.2011
comment
@MByD Знание — сила. Наличие мозгов, которые помогают вам решать проблемы, как у многих людей здесь, в стеке, помогает очень многим неизмеримым образом. Продолжайте хорошую работу. Это ценится. PS: реальная жизнь может подождать :) - person Boro; 15.05.2011
comment
@mKobel: для справки, здесь находится JSpinner в тот же L&F, aqua. - person trashgod; 15.05.2011
comment
@MByD согласился, хм, ссылка code.google.com/p/seaglass из сегодняшней темы stackoverflow.com/questions/6008058/customizing-jtextfield , один большой извините человек - person mKorbel; 15.05.2011

Пришлось использовать JComboBox вместо JPopupMenu

person Jumhyn    schedule 02.06.2011