【问题标题】:JFrame opens only the close, minimize and resize buttons until I resize the windowJFrame 仅打开关闭、最小化和调整大小按钮,直到我调整窗口大小
【发布时间】:2019-07-24 16:10:48
【问题描述】:

我正在用 Java 制作游戏,但运行代码时游戏窗口无法正常打开。我可以调整它的大小并使其成为正确的大小,但每次都这样做有点烦人。

这是窗口的代码,我还添加了一张图片来显示窗口是如何打开的。

import javax.swing.*;
import java.awt.*;

public class Window extends Canvas {

    private static final long serialVersionUID = 573860602378245302L;

    public Window(int width, int height, String title, Game game){
        JFrame frame = new JFrame(title);

        frame.setPreferredSize(new Dimension(width, height));
        frame.setMaximumSize(new Dimension(width, height));
        frame.setMaximumSize(new Dimension(width, height));

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(true);
        frame.setLocationRelativeTo(null);
        frame.add(game);
        frame.setVisible(true);
        game.start();
    }
}

【问题讨论】:

  • 你的Game 班级在哪里?
  • 1) frame.add(game); frame.setVisible(true); 更改为frame.add(game); frame.pack(); frame.setVisible(true); 2) 为了尽快获得更好的帮助,edit 添加minimal reproducible exampleShort, Self Contained, Correct Example。 3) Game 的大小更有可能需要固定为特定的widthheight。然后应将框架打包以适合它。
  • 谢谢安德鲁,第一个选项帮助了我。
  • “第一个选项对我有帮助”不客气。请注意未来的 MCVE / SSCCE 建议。还有一个提示:添加@MaifeeUlAsad(或任何重要的@)以通知该人有新评论。
  • 是的,我以后会多注意的。谢谢!

标签: java swing jframe


【解决方案1】:

有几种方法可以制作特定大小的JFrameframe.setPreferredSize() 不是其中一种方式。

您可以像这样在JFrame 上致电setSize(int width, int height)

import javax.swing.JFrame;

public class JFrameSize
{
  public static void main(String[] args)
  {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);
  }
}

或者您可以设置JFrame 的内容的首选大小(以下示例中的JPanel)并在JFrame 上调用pack(),如下所示:

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Dimension;

public class JFrameSize2
{
  public static void main(String[] args)
  {
    JPanel panel = new JPanel();
    panel.setPreferredSize(new Dimension(400, 300));

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(panel);
    frame.pack();
    frame.setVisible(true);
  }
}

【讨论】:

    猜你喜欢
    • 2021-09-20
    • 1970-01-01
    • 2017-11-18
    • 2012-01-28
    • 2014-11-25
    • 1970-01-01
    • 2016-04-20
    • 2019-05-15
    • 1970-01-01
    相关资源
    最近更新 更多