2011-11-14 18 views
9

JMenu'ya aşırı yüklenmeye çalışıyorum ve JTextField'ı desteklemek için bazı özel kodlar koydum ama bu iyi gitmiyor. Buradaki temel amacım, menü öğemlerin sağında bir arama alanı eklemektir. Bu yüzden Dosya, Düzen, soldan yardım gibi bir şey var ve sağ tarafta, bazı tarayıcılarda google arama çubuğunun nasıl olduğu gibi arama çubuğu var. Bu işlevselliği ekleme konusunda nasıl gidebileceğimin bir fikri var mı?JFrame'in MenuBar'ına JTextField'ı nasıl ekleyebilirim?

+0

yerleştirilir Neden iyi gitmiyor olduğunu düşünüyorum asla görmek? Ne * özellikle * seni rahatsız ediyor gibi görünüyor? – mre

+1

@mre Ben bir düğme yerine metin kutusunu eklemek çalışıyorum bir çıkmaz içine koştum. JMenuItem, AbstractButton öğesinden devraldığı için, bir Özet Kutusundaki metni değiştirmek yerine bir metin kutusu eklemeyi bilmiyorum. Ben de bunun, bahsettiğim işlevselliği eklemenin en iyi yolu olduğuna inanmıyorum, çünkü JMenu'nun derinliklerinde bir takım şeyleri değiştirmek zorunda kalabilirim. Sanırım bunu yapmak için daha iyi bir yol üzerinde rehberlik yapıyorum. – Grammin

cevap

18

Ben JMenuItem olarak, ben alyways 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

Keşke bunu bir kez daha yapabilirim, başka bir mükemmel cevap için teşekkür ederim! – Grammin

+0

size hoşgeldiniz, +1'e yardımcı olmaktan memnunum, ve herhangi bir JComponent'i JMenuItem'e koymak için kolay bir iş değil, sadece JDialog/JWindow (GridLayout) için eklenmiş JComponents – mKorbel

+0

Ah ok, tavsiye için teşekkürler – Grammin

İlgili konular