2011-11-14 56 views
9

Tôi đã cố gắng để quá tải JMenu và đưa vào một số mã tùy chỉnh để hỗ trợ một JTextField nhưng điều đó là không tốt. Mục đích chính của tôi ở đây là thêm một trường tìm kiếm ở bên phải các mục menu của tôi. Vì vậy, tôi có một cái gì đó như File, Edit, giúp đỡ bên trái và sau đó bên phải sẽ là thanh tìm kiếm, gần giống như làm thế nào có một thanh tìm kiếm google trong một số trình duyệt. Có ai có một ý tưởng làm thế nào tôi có thể đi về việc thêm chức năng này?Làm cách nào để thêm JTextField vào MenuBar của JFrame?

+0

Tại sao nó không được tiến triển tốt? Cái gì * đặc biệt * dường như đang làm phiền bạn? – mre

+1

@mre Tôi đã chạy vào một kết thúc chết, nơi tôi đang cố gắng thêm hộp văn bản thay vì một nút. JMenuItem kế thừa từ AbstractButton vì vậy tôi không biết cách thêm một hộp văn bản thay vì chỉ thay đổi văn bản trên một AbstractButton. Tôi cũng không tin rằng đây là cách tốt nhất để thêm chức năng tôi đang nói về bởi vì có vẻ như tôi có thể phải thay đổi xung quanh một loạt các thứ sâu bên trong JMenu. Tôi đoán tôi đang tìm kiếm hướng dẫn về một cách tốt hơn để làm điều này sau đó những gì tôi hiện đang cố gắng làm. – Grammin

Trả lời

18

Tôi chưa bao giờ thấy như JMenuItem, tôi nghĩ rằng alyways đặt trong 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

Tôi ước gì tôi có thể upvote điều này nhiều hơn sau đó một lần, cảm ơn bạn cho một câu trả lời xuất sắc! – Grammin

+0

bạn được chào đón, vui mừng giúp +1, và không dễ dàng để đưa bất kỳ JComponent nào vào JMenuItem, tôi đã sử dụng cho JDialog/JWindow (GridLayout) đó với JComponents đã thêm – mKorbel

+0

Ah ok, cảm ơn lời khuyên – Grammin

Các vấn đề liên quan