【问题标题】:How can I add a JTextField to a JFrame's MenuBar?如何将 JTextField 添加到 JFrame 的菜单栏?
【发布时间】:2011-11-14 19:02:32
【问题描述】:

我一直在尝试重载 JMenu 并放入一些自定义代码来支持 JTextField,但这并不顺利。我在这里的主要目的是在我的菜单项的右侧添加一个搜索字段。所以我有类似文件,编辑,左侧的帮助,然后右侧是搜索栏,就像某些浏览器中的谷歌搜索栏一样。有谁知道如何添加此功能?

【问题讨论】:

  • 为什么不顺利? 具体而言是什么让你感到困扰?
  • @mre 我遇到了一个死胡同,我试图添加文本框而不是按钮。 JMenuItem 从 AbstractButton 继承,所以我不知道如何添加文本框,而不仅仅是更改 AbstractButton 上的文本。我也不相信这是添加我正在谈论的功能的最佳方式,因为似乎我可能不得不围绕 JMenu 深处的一堆东西进行更改。我想我正在寻找一种更好的方法来做到这一点,而不是我目前正在尝试做的事情。

标签: java swing jmenubar


【解决方案1】:

我从来没有看到过JMenuItem,我认为总是放在JMenuBar

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,并且将任何 JComponent 放入 JMenuItem 并不容易,我只使用了添加了 JComponents 的 JDialog/JWindow (GridLayout)
  • 您的意思是"Search" 而不是"Seach"
  • @Cool Guy 可能在我的隧道尽头的光线强度不足 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 2011-11-01
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多