2017-05-10 82 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

相關問題