2011-03-14 12 views
5

Estoy buscando crear un JComboBox que actúe como un menú. Por ejemplo, cuando lo dejas caer, puedes seleccionar elementos como lo harías en una JMenuBar.JComboBox que es un Menú

Por lo tanto, se necesitarían JMenus y JMenuItems como en lugar de Strings.

¿Esto es posible?

+1

Esa es la forma en que funciona un JCombobox. Haga clic en un elemento para seleccionarlo. Puede agregar un ActionListener al cuadro combinado para hacer el procesamiento según el elemento seleccionado. No veo la razón para confundir al usuario al intentar mezclar la funcionalidad de un menú y un cuadro combinado. – camickr

+0

No veo ninguna diferencia entre JMenu y JCombobox porque ambos usan JPopupMenu. JMenu actúa como JCombobox ¿cuál es la necesidad de JCombobox? – u449355

+0

Quiero que pueda tener submenús. Entonces, en lugar de simplemente descartar una lista, deja caer una lista de menús, luego puede ir a ese menú. Me gustaría que sea consistente con los otros componentes de mi GUI. No quería tener un menú al azar allí – user489041

Respuesta

2

Una forma de lograr esto sería crear un botón que, al hacer clic, muestre un menú JPopup, justo debajo del botón. El menú permitiría al usuario seleccionar desde el menú o submenú. La etiqueta/selección del botón original debe cambiarse cuando se selecciona un elemento del menú.

+0

No es una mala idea. – user489041

-1

¿Esto es lo que estás buscando?

//package combo2; 

    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 

    public class Combo2 implements ItemListener { 

JFrame f1; 
JComboBox c; 
JPanel p ; 

JLabel j; 
Combo2() 
{ 
JFrame f1 = new JFrame("Selection"); 
      Container f = new Container(); 
      f.setLayout(new FlowLayout()); 

      String s [] = {"Red","Green","Yellow","Black"}; 
      c = new JComboBox(s); 
      j = new JLabel(); 
      p= new JPanel(); 

      c.addItemListener(this); 

      f1.add(p); 
      p.add(c); 
      p.add(j); 

      f1.setSize(500,500); 
      f1.setVisible(true); 

      } 
      public void itemStateChanged(ItemEvent ie) 
      { 
      String str = (String)c.getSelectedItem(); 
      j.setText(str); 
      } 
       public static void main(String[] args) { 
        Combo2 l = new Combo2(); 
       } 
      }