2012-11-28 8 views
2

est-il un moyen de mettre en œuvre le bouton déroulant en Java, mais sans mettre en œuvre JMenuBar? Je dois importer un bouton avec menu contextuel. Comment puis je faire ça?Menu déroulant sans JMenuBar

+2

Pourquoi ne pas avoir un bouton sur FocusGained/bouton cliqué et affiche un JPopMenu sous le bouton? –

+0

@DavidKroukamp, ​​ne sais pas pourquoi vous ne l'avez pas fait qu'une réponse ... – ryvantage

Répondre

1

Comme @DavidKroukamp a déclaré, un JPopupMenu devrait faire l'affaire.

1

enter image description here

import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 

    import javax.swing.JPopupMenu; 
    import javax.swing.JToggleButton; 
    import javax.swing.event.PopupMenuEvent; 
    import javax.swing.event.PopupMenuListener; 

    public class MenuButton extends JToggleButton { 

     JPopupMenu popup; 

     public MenuButton(String name, JPopupMenu menu) { 
      super(name); 
      this.popup = menu; 
      addActionListener(new ActionListener() { 
       @Override 
       public void actionPerformed(ActionEvent ev) { 
        JToggleButton b = MenuButton.this; 
        if (b.isSelected()) { 
         popup.show(b, 0, b.getBounds().height); 
        } else { 
         popup.setVisible(false); 
        } 
       } 
      }); 
      popup.addPopupMenuListener(new PopupMenuListener() { 
       @Override 
       public void popupMenuWillBecomeVisible(PopupMenuEvent e) {} 
       @Override 
       public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { 
        MenuButton.this.setSelected(false); 
       } 
       @Override 
       public void popupMenuCanceled(PopupMenuEvent e) {} 
      }); 
     } 
    }