我有一個GUI,它基於Swing的JPanel使用BorderLayout。在北面板中,我添加了一個使用FlowLayout幷包含兩個textField和其他組件的新JPanel。 當我更改textField的文本並隱藏此面板中的某些組件時,此textField不斷調整大小。我怎樣才能避免這種情況?我希望textField能夠保持相同的大小。我試過setSize,setPreferredSize,setMinimumSize沒有成功。如何禁用java swing中textField的大小調整?
txtSource = new WebTextField(source);
txtSource.setMaximumSize(new Dimension(30,20));
txtSource.setMinimumSize(new Dimension(20, 20));
txtSource.setEditable(false);
txtDestination = new WebTextField(destination);
txtDestination.setMaximumSize(new Dimension(30,20));
txtDestination.setMinimumSize(new Dimension(20, 20));
前:
後:
使用的FlowLayout導致組件大小調整。嘗試另一種佈局。 – xyz 2012-01-30 12:07:31
可能的重複 - http://stackoverflow.com/questions/6492794/swing-component-disabling-resize-in-layout – mre 2012-01-30 12:28:05
一般規則是_never_使用setXXSize(使用XX = min/pref/max)。相反,請使用適當的LayoutManager。假設WebTextField是JTextField的一個子類,你可以用「列」(大致字符數)來設置配置它的prefSize。 – kleopatra 2012-01-30 13:16:45