gpt4 book ai didi

java - 创建一个方法来处理所有类型的 Swing 组件

转载 作者:行者123 更新时间:2023-12-02 06:16:31 25 4
gpt4 key购买 nike

为了在设置 Swing 组件(JPanel、JLabel 等)的大小时节省一些时间,我尝试编写一个方法,在调用该方法时,将使用 3 个标准大小定义函数来设置该组件的大小.

我希望能够做到这一点:

import CustomComponents;
...
JPanel xPanel = new JPanel();
CSize.setDefiniteSize(xPanel, 400, 300);
...

或者(最好)

...
JPanel xPanel = new JPanel();
xPanel.CSize.setDefiniteSize(400, 300);
...

这是我到目前为止的代码。问题是,我希望该方法适用于所有类型的 Swing 组件,但它似乎只适用于我在标题中指定的组件。

package CustomComponents;
import javax.swing.JComponent;
import java.awt.Dimension;

public class CSize
{
public static void setDefiniteSize(JComponent c, int h, int w)
{
Dimension k = new Dimension (h, w);
c.setMaximumSize(k);
c.setMinimumSize(k);
c.setPreferredSize(k);
}
}
正如你所看到的,在这里我尝试使用 JComponent,但它不起作用,因为无论我使用它 - 比如说 JPanel - 都是 JPanel,而不是 JComponent (即使它是一个子类?我仍然不知道)不明白这是如何工作的)

最佳答案

尽管您正在尝试做的事情,您可能会认为很狡猾,但稍后您可能会发现尝试调整所有内容的大小是令人沮丧的

查看此帖子Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?

相反,您应该使用 LayoutManager。和 .pack() 框架。 Swing 是为了与 LayoutManager 一起使用而设计的。您需要考虑到您的程序可能在您的开发屏幕上看起来不错,但在其他屏幕上看起来可能有所不同。您还会发现许多 LayoutManegers 甚至不尊重您的首选尺寸,因此您需要了解哪些会尊重,哪些不会。这是 simple example

使用布局管理器,您可以让布局为您完成所有大小调整。有些布局会拉伸(stretch)您的组件,有些布局会将它们集中在开放空间中。如果您使用它们,您的程序将会更加流畅。

参见Laying out Components Within a Container有关如何使用它们的更多详细信息。

关于java - 创建一个方法来处理所有类型的 Swing 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21400129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com