使用 GridBagLayout 在 JPanel 内居中组件

我试图将一些组件放在 JPanel 中,当我在 JPanel 的 GridBagLayout 的“自定义布局”选项中按“测试布局”时,一切正常,但是当我运行程序时,它看起来不同。

它应该是这样的:

http://img2.mukewang.com/60fa82570001e8d708580761.jpg

相反,当我运行程序时,它看起来像这样:

http://img3.mukewang.com/60fa82630001bcba03480498.jpg

该程序的结构如下:

http://img1.mukewang.com/60fa827100015cb502940284.jpg

所以有两个问题:

  1. 密码字段大于电子邮件地址字段。我已经尝试将最小、最大和首选大小设置为 (14, 22) 到它们,但它不起作用。

  2. 为什么按钮是分开的,我怎样才能让它们连接起来?(右边的按钮有 0 个左边的插图)


炎炎设计
浏览 259回答 3
3回答

米琪卡哇伊

不要使用 setPreferredSize()。每个 Swing 组件将根据组件的属性确定自己的大小。在许多情况下,这将基于组件的文本。对于没有默认文本的文本字段,您应该创建如下组件://emailTextField = new javax.swing.JTextField();//passwordField = new javax.swing.JPasswordField();emailTextField = new javax.swing.JTextField(20);passwordField = new javax.swing.JPasswordField(10);因此组件可以确定其首选大小以显示 20/10 个字符。(它实际上调整自己的大小以显示“W”字符)。此外,通常不需要设置组件的最小/最大大小,因为除非您填充单元格,否则 GridBagLayout 将遵循首选大小。

阿波罗的战车

我不确定密码字段,但对于单独的按钮,您可以创建一个带有框布局的新面板。然后,您可以将按钮放在那里。之后,您可以将新面板放入主面板中。这在我当前的项目中有效。希望它也适用于你的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java