2011-11-14 5 views
9

私はJMenuをオーバーロードしようとしていて、JTextFieldをサポートするためのカスタムコードを入れていますが、うまくいきません。私の主な目的は、メニュー項目の右側に検索フィールドを追加することです。だから、私はファイル、編集、左のヘルプのような何かを持っているし、右のいくつかのブラウザでは、Googleの検索バーがどのようにほぼ同じように、検索バーになります。どのように私はこの機能を追加することができますか考えている人はいますか?JFrameのメニューバーにJTextFieldを追加するにはどうすればよいですか?

+0

に配置され、なぜそれがうまくいっていないことを考えていることを見ることはありませんか? *具体的に何があなたを悩ませているようですか? – mre

+1

@mre私はボタンの代わりにテキストボックスを追加しようとしています。 JMenuItemはAbstractButtonを継承しているので、AbstractButtonのテキストを変更するのではなく、テキストボックスを追加する方法はわかりません。私はこれがJMenu内の深いものの周りを変えなければならないかもしれないので、これが私が話している機能を追加する最善の方法だとも信じていません。私は、私が現在しようとしていることをこれを行うためのより良い方法に関する指針を探していると思います。 – Grammin

答えて

18

私はJMenuItemとして、私は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

もう一度これをアップホートすることができたら、もう一度優秀な答えをありがとう! – Grammin

+0

JComponentにJComponentを追加するのは歓迎して嬉しく思います。JComponentを追加したJDialog/JWindow(GridLayout)のみを使用しました – mKorbel

+0

ああ、アドバイスありがとう – Grammin

関連する問題