Java 为什么要多次打包?

Java 为什么要多次打包?,java,pack,Java,Pack,像这样的一段代码。我只是想知道为什么在这里使用几个pack()和setVisible()。 谢谢:)我们将物品放在一个容器中,我们可以通过设置大小或包装来设置它们的大小。包装是首选,因为它的大小框架,使其所有内容是或高于他们的首选尺寸;包让框架布局管理器负责框架大小 因为我们将一些GUI元素设置为不可见,所以我们不希望出现空白,所以这可能就是为什么它被反复使用的原因。我会通过注释中间的所有包来运行该应用程序,并验证它是否确实有必要。我的第一个想法是“因为程序员不知道他们在做什么,只是不断复制/粘

像这样的一段代码。我只是想知道为什么在这里使用几个pack()和setVisible()。
谢谢:)

我们将物品放在一个容器中,我们可以通过设置大小或包装来设置它们的大小。包装是首选,因为它的大小框架,使其所有内容是或高于他们的首选尺寸;包让框架布局管理器负责框架大小


因为我们将一些GUI元素设置为不可见,所以我们不希望出现空白,所以这可能就是为什么它被反复使用的原因。我会通过注释中间的所有包来运行该应用程序,并验证它是否确实有必要。

我的第一个想法是“因为程序员不知道他们在做什么,只是不断复制/粘贴代码行,直到它神奇地工作”。不要这样研究代码,也不要将代码建立在这样编写的API上。作者给出的解释是,pack()方法的行为受到执行环境的限制。这两种方法的综合运用是为了处理环境造成的差异。。。实际上我不明白他的意思words@bunnyshell我怀疑没有人,包括作者,理解这些话。这个API的URL是什么?他说的是,他使用setVisible/pack来最小化/消除Swing在不同窗口系统(mac、windows、unix)中呈现组件的方式差异。我的猜测是,作者“放弃了很多代码”去做一些事情,却没有真正理解哪里出了问题。也就是说,在你准备好解决这些问题之前,我会谨慎地删除它。@Richard更为谨慎的是,我会将代码扔出窗口并点击教程。是的。。。它看起来像是巫毒编码的经典例子-
public PenApp() {
    super("PenApp");
    pack();
    setVisible(true);
    setVisible(false);
    pack();
    setResizable(false);
    pack();
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation((d.width - CANVAS_SIZE) / 2, (d.height - CANVAS_SIZE) / 2);
    setSize(CANVAS_SIZE + getInsets().left + getInsets().right,
        CANVAS_SIZE + getInsets().top + getInsets().bottom);
    addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {System.exit(0);}
    });

    img = Toolkit.getDefaultToolkit().getImage
        (getClass().getResource("penguin.gif"));
    img2 = Toolkit.getDefaultToolkit().getImage
        (getClass().getResource("kuwa.gif"));
    enableEvents(AWTEvent.MOUSE_EVENT_MASK);
    x = getInsets().left;
    y = getInsets().top;

    setVisible(true);
}