我有一个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