【发布时间】:2013-01-08 22:50:43
【问题描述】:
我遇到了一个不寻常的问题,即 JPanel 内的所有对象都占用了 JTextField 的大小。即使我尝试对其他对象强制设置大小,它们仍然会将为文本字段指定的大小作为自己的大小。例如,我正在尝试以自己的方法设置单个面板,如下所示:
private JPanel setupID() {
JLabel projLbl = new JLabel("Project ID:");
JButton verifyBtn = new JButton("Verify ID");
projID = new JTextField(25);
verifyBtn.setToolTipText("Verifies that the entered ID is not already in use.");
JPanel theID = new JPanel(new GridLayout(1,0));
theID.add(projLbl);
theID.add(projID);
theID.add(verifyBtn);
return theID;
}
我最终得到的是一个看起来像这样的窗口...
正在加载的JFrame frame; 调用了frame.pack() 方法来自动调整帧大小。如果我在不同区域(例如 WEST、CENTER、EAST)的 BorderLayout() 中创建单个对象,它们将按预期工作,但是当它们加载到面板中时,它们的大小都基于 JTextField(25)。任何想法为什么会这样?
【问题讨论】:
-
这是 GridLayout 的行为。如果您想更好地控制 GUI 中每个组件的大小,则需要选择不同的 LayoutManager。要快速了解标准 LayoutManager 之间的差异,请查看here。
-
@Code-Guru 你真的需要回答这个问题并添加一个例子!
-
感谢链接代码大师,这对描述不同的布局类型很有帮助。
标签: java swing jpanel preferredsize