【问题标题】:Frame not set to size defined Java框架未设置为大小定义的 Java
【发布时间】:2012-11-02 03:20:15
【问题描述】:

我正在学习如何制作小程序。我有一个包含小程序的框架。在小程序中,有 4 个不同的面板:一个主面板(带有 BorderLayout)和 3 个主面板中的子面板 one()——一个向北,一个向南,一个向中心)。 每当我启动小程序时,主框架尺寸都非常小。我尝试使用 setSize() 更改它,但它不起作用。然后我尝试使用其他帖子中的 setPreferedSize() 和 pack() ,但它对我不起作用。 这是我的代码:

        BounceBallApp applet = new BounceBallApp();
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("BounceBallApp");

        frame.add(applet, BorderLayout.CENTER);

        frame.setPreferredSize(new Dimension(1000, 1000));
        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);

【问题讨论】:

  • 是不是我也应该为小程序和每个面板设置大小?
  • 1) “我正在学习如何制作小程序。我有一个包含小程序的框架。” 然后制作一个面板,放入框架或小程序中,而不是放入框架中的小程序。 2) 为了尽快获得更好的帮助,请发帖SSCCE
  • 哦,我一直在关注一本书中的一章“小程序”,在所有示例中,小程序都包含在一个框架中。或者,也许我理解错了。摘录:“当小程序独立运行时,会调用 main 方法来创建一个框架来容纳小程序”。
  • “哦,好吧,我一直在关注一本书中的一章“小程序”,在所有示例中,小程序都包含在一个框架内” 那本书不好教育材料。写在上面的纸不值得。将其用于门挡或引火等有用的东西。
  • @user1719821 正如 Andrew 所说,混合 Applet 和 Frames 的正确方法是使用一个通用容器,例如 JPanel,可以根据需要添加到其中一个。

标签: java swing


【解决方案1】:

嗯,有你的问题...

frame.setPreferredSize(new Dimension(1000, 1000));
frame.setLocationByPlatform(true);
frame.pack(); <-- This is you're problem, or is it...

pack 你会使用布局管理器的首选尺寸来“打包”框架,这样你就不必猜测了...

来自 Java 文档...

调整此窗口的大小以适合首选大小和布局 的子组件。结果窗口的宽度和高度是 如果任一尺寸小于 上一次调用 setMinimumSize 指定的最小尺寸 方法。

如果窗口和/或其所有者还不能显示,则它们都不能显示 在计算首选大小之前使其可显示。窗户 在计算其大小后进行验证。

另外...我不明白您为什么要以这种方式混合两个顶级容器,但我真的建议您不要...

【讨论】:

    【解决方案2】:

    尝试使用Component#setMinimumSize(...) 这将不允许任何布局管理器违反此最小尺寸。

    【讨论】:

    • 哦,我敢肯定有一些会的;)
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2011-05-22
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多