Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTextField在最小化JFrame后正在移动_Java - Fatal编程技术网

Java JTextField在最小化JFrame后正在移动

Java JTextField在最小化JFrame后正在移动,java,Java,我刚刚完成一个项目,遇到了一个迄今为止在互联网上找不到的问题 我在JFrame上的JPanel上有几个jTextField。当我打开框架时,所有文本字段都在正确的位置。如果我最小化框架并再次打开它,所有文本字段都会移动并变小。 这些是我缩小相框前后的照片 之前: 之后: Swing设计用于布局管理器。布局管理器的工作是根据每个组件的首选尺寸和布局管理器的规则设置每个组件的“尺寸”和“位置” 在代码中,setBounds(…)代码只是临时的。调整框架大小时,将调用布局管理器,并为所有构件指定适

我刚刚完成一个项目,遇到了一个迄今为止在互联网上找不到的问题

我在JFrame上的JPanel上有几个jTextField。当我打开框架时,所有文本字段都在正确的位置。如果我最小化框架并再次打开它,所有文本字段都会移动并变小。 这些是我缩小相框前后的照片

之前:

之后:


Swing设计用于布局管理器。布局管理器的工作是根据每个组件的首选尺寸和布局管理器的规则设置每个组件的“尺寸”和“位置”

在代码中,setBounds(…)代码只是临时的。调整框架大小时,将调用布局管理器,并为所有构件指定适当的大小/位置

因此,解决方案不是试图手动设置边界,而是有效地使用布局管理器

阅读上Swing教程中的部分,以获取更多信息和工作示例,帮助您入门

根据您的示例图片,我建议您可以使用
GridBagLayout
。它将允许您使用行和列创建GUI。您还可以让组件跨多个列。我看到你有5行3列。从教程中下载工作演示代码,并根据您的需求进行修改

所有文本字段都将移动并缩小

每个回转组件应确定其自己的首选尺寸

使用时:

field0 = new JTextField();
首选尺寸是您看到的尺寸

创建文本字段的更好方法是使用:

field0 = new JTextField(10);
现在,“10”将允许文本字段确定其首选大小,以容纳10个“W”字符

此外,Swing组件在默认情况下是可见的,因此您需要对每个组件使用setVisible(true)。

了解如何使用
field0 = new JTextField();
field0 = new JTextField(10);