我正在尝试添加 JTextField
作为 JMenuBar
的搜索栏在我的顶部JFrame
。我的问题是 JTextField
不断调整大小以占用 JMenuBar
中的所有可用空间,我不希望这样。我试过setPreferredSize()
和setMaximum Size()
,但这些不起作用,大概是因为 LayoutManager
用于JMenuBar
不尊重这些尺寸。我还尝试添加 JTextField
到 JPanel
与 FlowLayout
并将面板添加到 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/