2013-03-07 34 views
1

謝謝所有幫助我處理JTextField問題的人。我通過使用BorderLayout.PAGE_START將JTextField成功添加到帶有邊框佈局的框架中。 但現在我無法編輯JTextField的寬度。只有高度在變化。 請看下劃線。[這會改變JTextField的高度,但寬度不會改變]。無法在帶有邊框佈局的JFrame中編輯JTextField的寬度

JFrame with fully stretched TextField

是邊框佈局一直延伸到組件的最大寬度?

+0

尺寸確實由'LayoutManager'確定。建議下次。發佈實際代碼iso代碼的圖像。 – Robin 2013-03-07 14:49:40

+0

你是如何將你的佈局添加到你的框架的容器?你甚至使用它?你應該直接添加你的項目而不是你的框架,像這樣:'frame.getContentPane()。add(jtf,BorderLayout.PAGE_START);'。無論如何,請發佈更多代碼。 – Rob 2013-03-07 14:51:46

+0

@Rob我多次看到'getContentPane()'的使用,就像在你的例子中一樣。但爲什麼有些人這樣做,而不是直接將組件添加到框架?有區別嗎?有優勢嗎?有缺點嗎? – 2013-03-07 15:15:25

回答

3

請不要使用這樣的setPreferredSize(),因爲你不知道字體有多大。改爲像this

編輯:我忘了BorderLayout.PAGE_START,所以只需使用新的JPanel()FlowLayout;它使用文本字段的內置首選大小。

JTextField textField = new JTextField(10); 
JPanel panel = new JPanel(); 
panel.add(textField); 
frame.add(panel, BorderLayout.PAGE_START); 
... 
frame.pack(); 
frame.setVisible(true); 
+0

關於你的鏈接答案:實際上,硬編碼**任何**的min/pref/max是一個壞主意,無論你使用什麼值 – kleopatra 2013-03-07 15:45:55

+0

更多詳情[here](http://stackoverflow.com/q/7229226/230513)。 – trashgod 2013-03-07 19:50:05

+0

謝謝你所有的答案和評論。我需要徹底地通過FRAME,PANEL,CONTENT PANE和LAYOUTS。 – Sam 2013-03-08 06:45:49