【问题标题】:Window size is wrong or not setting in SwingSwing 中的窗口大小错误或未设置
【发布时间】:2014-07-20 00:40:08
【问题描述】:

这是我的第一个摇摆应用程序。我正在尝试创建一个窗口并添加一个按钮。单击按钮时,它应该在控制台上显示一些值。 Everythign 工作正常,但窗口非常小。我指定了 800*600,但窗口大小也很小,即它仅包含按钮大小。

这是我的代码 sn-p:

JFrame frame = new JFrame("My Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new MyClass(), BorderLayout.CENTER);
frame.setSize(800, 600);
frame.pack();
frame.setVisible(true);

来自 MyClass.java 的片段:

setLayout(new GridBagLayout());
JButton button = new JButton("Button");
button.addActionListener(this);
add(button);

如何使窗口大小为800*600?

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。 2) 提供 GUI 的 ASCII 艺术(或带有简单绘图的图像),因为它应该以最小尺寸出现,并且(如果可调整大小)具有额外的宽度/高度。

标签: java swing jframe


【解决方案1】:

pack() 方法应始终在基于JFrame 的 GUI 上调用,因此请保留它。它将 GUI 缩小到显示其中组件所需的最小尺寸。但不要在那之后打电话给setSize(Dimension),在检查它是否大于最小尺寸之前。

【讨论】:

    【解决方案2】:

    你正在调用 pack 方法。 api 说:“它会导致这个窗口的大小适合其子组件的首选大小和布局”

    您尚未指定首选尺寸。尝试这样做:

    frame.setPreferredSize(new Dimension(800,600));

    【解决方案3】:

    【讨论】:

    • 谢谢。按预期工作。
    • 这是非常糟糕的建议和错误的选择答案。
    猜你喜欢
    • 2010-12-28
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多