2017-05-10 85 views
-2

我试图在用户单击JMenuItem时显示弹出窗口。 我有下面的代码:单击JMenuItem时的弹出窗口

menuAnular = new JMenuItem(w.translate("ETI_ANULAR"),imageAnular); 
menuAnular.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     JDialog yesNo = new JDialog(); 
     yesNo.setVisible(true); 
    } 

}); 

可悲的是,这种线什么都不露面。我尝试了几种方法来做到这一点,但我看不到任何显示。

+0

我们可以看到自定义的JDialog类吗? –

+0

JDialog是一个包含在来自javax的Swing库中的类。以下是文档:https://docs.oracle.com/javase/7/docs/api/javax/swing/JDialog.html – gab

+1

对不起,但我无法在官方(doc)中找到[https:// docs。 oracle.com/javase/7/docs/api/javax/swing/JDialog.html#JDialog()]你发布了一个构造函数作为*** JDialog(String x)***,我们可以看到自定义的JDialog类吗? –

回答

0
menuAnular.addMouseListener(new MouseAdapter() { 
      public void mousePressed(MouseEvent e) { 
       final JPopupMenu popup = new JPopupMenu(); 
       popup.add(new JMenuItem(new AbstractAction("TITLE OF THE NEW JMENUITEM OF THE POPUP") { 
        public void actionPerformed(ActionEvent e) { 
         if (JOptionPane.showConfirmDialog(contentPanel, 
           "Dialog", "Dialog title", 
           JOptionPane.YES_NO_OPTION, 
           JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) 
         { 
          //DO SOMETHING 
         } 
        } 
       })); 
popup.show(e.getComponent(), e.getX(), e.getY()); 
      }}); 

新的弹出窗口将在用户点击的位置创建。

对象'contentPanel'是您的应用程序的主要JPanel。

我希望这个帮助。

+2

对任何接受它们的组件使用“ActionListener”。它不仅会对鼠标点击产生反应,还会对键盘输入产生反应。 –

+0

你说得对,我以为他只是想让应用程序对鼠标点击作出反应。 – AngryCoder

+1

同意,JMenu/JMenuItem拥有自己的Listeners,但ActionListener是最简单的选择, – mKorbel

相关问题