我試圖將JTextField
作爲搜索欄添加到我的JFrame
頂部的JMenuBar
。我的問題是,JTextField
不斷調整大小,以佔用JMenuBar
中的所有可用空間,我不希望它。我試過setPreferredSize()
和setMaximum Size()
,但這些都沒有奏效,大概是因爲JMenuBar
中使用的LayoutManager
不尊重這些尺寸。我也嘗試添加了JTextField
到JPanel
與FlowLayout
並添加面板到JMenuBar
,但我得到的東西看起來是這樣的:調整JMenuBar中的JTextField的大小
的面板上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);
'JMenuBar'有它自己的佈局管理器,可能會忽略你的尺寸提示 – MadProgrammer 2013-03-06 01:44:10
是的,我知道,但肯定有一個解決方法在這裏。看起來好像我發佈的那樣(將JTextField等添加到JPanel中)可以工作,但JPanel不能正確顯示,這是我真正不明白的 – drewmoore 2013-03-06 01:46:27
'JPanel'會受到與'JTextField' ...對不起,需要一個關於此的思考空間;) – MadProgrammer 2013-03-06 01:56:29