2014-04-30 25 views

回答

5

問題是JPopupMenu不是最初可見或添加到容器的組件。所以只需將其拖放到設計視圖框架中,對設計視圖不會產生任何影響。

但是,如果你看看源代碼或導航器,你會看到聲明爲類成員jPopupMenu並在initComponents()方法實例化。

我自己嘗試過不同的事情,並且從我嘗試過的方式來看,它看起來並不像可以用可視方式設計彈出菜單。你可以使用Navigator來設計它。

enter image description here

  1. 從Navigator,你會看到jPopupMenu1。您可以通過右鍵單擊並選擇Add from Palette來添加JMenusJMenuItems
  2. 然後,您可以直接從導航點擊JMenuItem和slecting Events -> Actions -> actionPerformed

爲了使JPopupMenu出現添加監聽器JMenuItem,你需要一個MouseListener添加到組件,無論是框架或其他零件。例如(在框架):

  1. 選擇從框架導航,然後右鍵單擊它並選擇Events -> Mouse ->,你將需要實現兩個mousePressedmouseReleased,因爲不同的平臺有不同的彈出式觸發器時,Windows是mouseReleased,我認爲Mac是mousePressed(不要引用我)。
  2. 創建一個方法來顯示彈出菜單。

    private void showPopupMenu(MouseEvent e) { 
        jPopupMenu1.show(this, e.getX(), e.getY()); 
    } 
    
  3. 實現你mousePressedmouseReleased方法

    private void formMousePressed(MouseEvent evt) {         
        if (evt.isPopupTrigger()) { 
         showPopupMenu(evt); 
        } 
    }         
    
    private void formMouseReleased(MouseEvent evt) {         
        if (evt.isPopupTrigger()) { 
         showPopupMenu(evt); 
        } 
    } 
    

enter image description here

+0

TNX你的答案,但我使用Mac和也實現了我和的mousePressed方法的mouseReleased但不工作: ( –

+0

Oooh sry :(我有一個錯誤,沒關係 mac popup trigger'mousePressed()':) –

相關問題