2011-11-14 16 views
9

He intentado sobrecargar JMenu y poner un código personalizado para admitir un JTextField, pero eso no va bien. Mi objetivo principal aquí es agregar un campo de búsqueda a la derecha de mis elementos de menú. Así que tengo algo como Archivo, Editar, ayuda a la izquierda y luego a la derecha sería la barra de búsqueda, casi como la barra de búsqueda de Google en algunos navegadores. ¿Alguien tiene una idea de cómo podría agregar esta funcionalidad?¿Cómo puedo agregar un JTextField a la barra de menús de JFrame?

+0

Por qué no se van bien? ¿Qué * específicamente * parece molestarlo? – mre

+1

@mre Me encontré con un callejón sin salida donde estoy tratando de agregar el cuadro de texto en lugar de un botón. JMenuItem hereda de AbstractButton, así que no sé cómo agregar un cuadro de texto en lugar de simplemente cambiar el texto en un AbstractButton. Tampoco creo que esta sea la mejor forma de agregar la funcionalidad de la que estoy hablando porque parece que tendré que cambiar un montón de cosas en JMenu. Creo que estoy buscando orientación sobre una mejor manera de hacer esto, entonces lo que estoy tratando de hacer en este momento. – Grammin

Respuesta

18

nunca ver que a medida que JMenuItem, creo que alyways colocan en JMenuBar

enter image description here

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

public class MenuGlueDemo { 

    public MenuGlueDemo() { 
     JMenuBar menuBar = new JMenuBar(); 
     menuBar.add(createMenu("Menu 1")); 
     menuBar.add(createMenu("Menu 2")); 
     menuBar.add(createMenu("Menu 3")); 
     menuBar.add(new JSeparator()); 
     menuBar.add(new JButton(" Seach .... ")); 
     menuBar.add(new JTextField(" Seach .... ")); 
     menuBar.add(new JComboBox(new Object[]{"height", "length", "volume"})); 
     menuBar.add(Box.createHorizontalGlue()); 
     menuBar.add(createMenu("About")); 
     JFrame frame = new JFrame("MenuGlueDemo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(menuBar); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public JMenu createMenu(String title) { 
     JMenu m = new JMenu(title); 
     m.add("Menu item #1 in " + title); 
     m.add("Menu item #2 in " + title); 
     m.add("Menu item #3 in " + title); 
     if (title.equals("About")) { 
      m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     } 
     return m; 
    } 

    public static void main(String[] args) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       MenuGlueDemo menuGlueDemo = new MenuGlueDemo(); 
      } 
     }); 
    } 
} 
+1

¡Desearía poder votar esto más de una vez, gracias por otra excelente respuesta! – Grammin

+0

eres bienvenido, me alegro de ayudar +1, y no es fácil poner JComponent en el JMenuItem, utilicé para eso solo JDialog/JWindow (GridLayout) con JComponents añadidos – mKorbel

+0

Ah bien, gracias por el consejo – Grammin

Cuestiones relacionadas