java - 调整 JMenuBar 中 JTextField 的大小

标签 java swing jtextfield layout-manager preferredsize

我正在尝试添加 JTextField作为 JMenuBar 的搜索栏在我的顶部JFrame 。我的问题是 JTextField不断调整大小以占用 JMenuBar 中的所有可用空间,我不希望这样。我试过setPreferredSize()setMaximum Size() ,但这些不起作用,大概是因为 LayoutManager用于JMenuBar不尊重这些尺寸。我还尝试添加 JTextFieldJPanelFlowLayout并将面板添加到 JMenuBar ,但我得到的东西看起来像这样:

该面板位于 JMenuBar 的右侧,而且尺寸似乎是正确的,但除了这个奇怪的蓝色条之外,我看不到任何东西。

这是(我认为)相关的代码。如果需要更多信息,请告诉我:

       JPanel searchPanel = new JPanel();
    searchPanel.setPreferredSize(new Dimension(100, 25));


    JTextField searchBar = new JTextField(50);

    String[] fields = {"title", "author", "subject", "publisher", "year", "circulating", "catalog" };


    JComboBox searchFields = new JComboBox(fields);

    JButton searchBtn = new JButton("search");

    searchPanel.add(searchBar);
    searchPanel.add(searchFields);
    searchPanel.add(searchBtn);
    searchPanel.setVisible(true);

    fileMenu.add(open);
    fileMenu.add(save);
    fileMenu.add(exit);

    libMenu.add(viewLib);
    libMenu.addSeparator();
    libMenu.add(newBook);
    libMenu.add(search);

    this.setJMenuBar(topBar);
       topBar.add(fileMenu);
    topBar.add(libMenu);
    topBar.add(Box.createHorizontalGlue());
   topBar.add(searchPanel);

最佳答案

这对我有用。

menuBar.add(Box.createHorizontalGlue());
JTextField textField = new JTextField(10);
textField.setMaximumSize( textField.getPreferredSize() );
menuBar.add(textField);

如果您需要更多帮助,请发布 SSCCE。

编辑:

同样,发布代码只是为了表明问题在于包含文本字段的最大大小。您选择如何执行此操作取决于您。

关于java - 调整 JMenuBar 中 JTextField 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237450/

相关文章:

java - 如何在 JSP 中显示数据库中的图像?

java - Java 中的 Boolean.getBoolean() 与 System.getenv()

java - JKeyListener 字符/自动完成

java - facebook4j如何获取PictureURL大小480x480?

java - 在 Swing 中刷新 BufferedImage 像素的惯用方法

java - 如何清除 Java 中的 JList?

java - 如何关闭JDialog并保存设置?

java - 在多行 JTextField 中更改光标垂直对齐方式

java - 如何使用 JButton 从 JTextField 获取 int

java - 如何在应用程序中为所需页面实现 HTTPS?