2011-11-14 21 views
9

Ho cercato di sovraccaricare JMenu e inserire un codice personalizzato per supportare un JTextField ma non sta andando bene. Il mio scopo principale qui è quello di aggiungere un campo di ricerca alla destra delle mie voci di menu. Quindi ho qualcosa come File, Modifica, aiuto a sinistra e poi a destra sarebbe la barra di ricerca, quasi come su una barra di ricerca di Google in alcuni browser. Qualcuno ha un'idea di come potrei fare per aggiungere questa funzionalità?Come posso aggiungere un JTextField a un MenuBar di JFrame?

+0

Perché non sta andando bene? Cosa * specificamente * sembra preoccuparti? – mre

+1

@ mi sono imbattuto in un vicolo cieco in cui sto cercando di aggiungere la casella di testo anziché un pulsante. JMenuItem eredita da AbstractButton quindi non so come aggiungere una casella di testo invece di cambiare semplicemente il testo su un AbstractButton. Inoltre, non credo che questo sia il modo migliore per aggiungere la funzionalità di cui sto parlando perché sembra che potrei dover cambiare un sacco di cose all'interno di JMenu. Suppongo che sto cercando una guida su un modo migliore per farlo, quindi cosa sto cercando di fare attualmente. – Grammin

risposta

18

ho mai vedere che come JMenuItem, penso che alyways collocati in 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

Vorrei poterlo più volte più di una volta, grazie per un'altra eccellente risposta! – Grammin

+0

sei il benvenuto, contento di aiutare +1, e non è facile mettere JComponent su JMenuItem, ho usato solo JDialog/JWindow (GridLayout) con JComponents aggiunto – mKorbel

+0

Ah ok, grazie per il consiglio – Grammin

Problemi correlati