繁体   English   中英

JFrame Java。Window 未显示

[英]JFrame Java. Window not showing

嘿,我试图从一个简单游戏的教程中复制游戏代码,只是为它创建环境。 现在的问题是我复制了代码,也检查了几次,就是不显示。 代码本身似乎没有任何错误,控制台只显示一些“终止的游戏 [Java 应用程序] C:/Users....”,我不太明白。


package com.tutorial.main;

import java.awt.Canvas;

public class Game extends Canvas implements Runnable{
    
    private static final long serialVersionUID = 1550691097823471818L;
    
    public static final int WIDTH = 640, HEIGTH = WIDTH / 12 * 9;
    
    public Game() {
        new Window(WIDTH, HEIGTH, "Let´s build a Game!", this);
    }
    
    public synchronized void start() {
        
    }
    public void run() {
        
    }
    
    public static void main(String []args ) {

        }
    }

和 class


package com.tutorial.main;

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

public class Window extends Canvas{

    enter code here
    private static final long serialVersionUID = -240840600533728354L;
    
    public Window(int width, int height, String title, Game game) {
        JFrame frame = new JFrame();
        
        frame.setPreferredSize(new Dimension(width, height));
        frame.setMinimumSize(new Dimension(width, height));
        frame.setMaximumSize(new Dimension(width, height));

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

}

只需为 class 游戏创建一个 object。

new Game();

还有frame.setLocation(null); 抛出错误。

这就是为什么盲目复制粘贴代码不是一个好主意。 你有两个班级。 我假设游戏 class 将处理游戏逻辑,而游戏 Window function 将处理 GUI 相关。 在你的游戏 class 中,你有主要的 function,这是 function java 将在你启动程序时寻找。 但它是空的。 这就是你的程序终止的原因。 您应该定义 Game class 的一个实例,这将触发 Game 构造函数,您的 window 将被启动,然后调用您需要的任何方法。

添加一个new Game(); 在主要方法中。 而不是frame.setLocation(null); 做`frame.setRelativeLocation(null);

现在可以用了,谢谢大家; 问题不在于 setLocationRelativetoNull(null)。 但是我忘了在主要方法中创建游戏 class 的 object; 标题没有被使用,因为我创建了 Jframe frame = new Jframe(); 而不是 Jframe frame = new Jframe(title);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM