我的问题不是那么大,但很烦人。
在我的IDE(Netbeans 12.6)中查看我的JFrame
:
Frame within IDE
(Pay注意文本字段的距离)
现在,请看运行的相同框架:
Frame running
你看到区别了吗?这太不舒服了。
我该怎么做才能使跑步框架中的元素距离相等?
PS:框架被设置为不可调整大小(可能此信息有用)。
我的问题不是那么大,但很烦人。
在我的IDE(Netbeans 12.6)中查看我的JFrame
:
Frame within IDE
(Pay注意文本字段的距离)
现在,请看运行的相同框架:
Frame running
你看到区别了吗?这太不舒服了。
我该怎么做才能使跑步框架中的元素距离相等?
PS:框架被设置为不可调整大小(可能此信息有用)。
1条答案
按热度按时间lymnna711#
在此之前,我从未使用过NetBeans IDE,更不用说它的GUI builder了。它实际上非常强大。尽管它允许不了解Swing的人创建一个可工作的应用程序,但我相信它的真实的目的是让有经验的程序员不必编写 Swing 应用程序所需的大量样板代码。换句话说,为了最大限度地利用NetBeans GUI构建器,您需要对 Swing 有一个全面的了解,而这只能通过编写大量 Swing 代码(而不是让GUI构建器为您生成代码)来获得。我认为NetBeans GUI构建器是为 Swing 大师而不是 Swing 学徒准备的。
默认情况下,NetBeans GUI生成器使用GroupLayout,我假设它是您代码中使用的布局管理器,但这似乎给您带来了一个问题-否则您就不会发布您的问题了。因此,您需要使用嵌套的
JPanel
,并为每个JPanel
使用适当的布局管理器-这就是我所做的。下面是NetBeans IDE得屏幕截图,其中显示了嵌套面板得层次结构.
JFrame
的[内容窗格]的布局管理器是BorderLayout
。如您在上图左下角的“树”中所见,JFrame
包含三个面板,即topPanel
(其布局管理器是BoxLayout
),resultPanel
和bottomPanel
(它们都将FlowLayout
作为它们的布局管理器)。希望您现在能够理解“树”的其余部分。现在来看看GUI顶部的
JTextField
之间的空间问题。正如您所看到的,我使用了GridBagLayout,因为它将确保文本字段的位置(相对于彼此)将保持不变。请注意,可能有其他布局管理器,也将给予你同样的结果,但我会让你调查其他选项,如果你这样的愿望。也许看看JGoodies FormLayout,注意我自己从来没有用过。为了完成这个答案,下面是代码(完全由NetBeans生成)。但是,我确实注解掉了设置look-and-feel的代码。另外,下面的代码只创建和显示GUI。当您单击
JButton
时,它们什么也不做。这是我运行上面的代码时的样子。