Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 已完成的项目,如何在NetBeans中添加背景_Java_Netbeans - Fatal编程技术网

Java 已完成的项目,如何在NetBeans中添加背景

Java 已完成的项目,如何在NetBeans中添加背景,java,netbeans,Java,Netbeans,我正在使用NetBeans IDE 8.2,并根据教程创建了一个简单的克隆游戏。 我希望为应用程序添加背景,我的研究一直指向使用JFrame表单和JLabel 没有任何教程涉及背景或JFrame表单/JLabel。因此,我不确定如何把我完成的项目,并添加一个背景。我试图复制JFrame表单和JLabel代码,但却无法将我的类/接口放在JFrame表单/JLabel的“内部”或“顶部” 如果这真的不是一个理想的第一个问题,我很抱歉,我刚刚注册,这是我第一次进入Java池 编辑:添加my Game.

我正在使用NetBeans IDE 8.2,并根据教程创建了一个简单的克隆游戏。 我希望为应用程序添加背景,我的研究一直指向使用JFrame表单和JLabel

没有任何教程涉及背景或JFrame表单/JLabel。因此,我不确定如何把我完成的项目,并添加一个背景。我试图复制JFrame表单和JLabel代码,但却无法将我的类/接口放在JFrame表单/JLabel的“内部”或“顶部”

如果这真的不是一个理想的第一个问题,我很抱歉,我刚刚注册,这是我第一次进入Java池

编辑:添加my Game.java类的完整粘贴

package game;

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferStrategy;
import java.util.ArrayList;
import javax.swing.*;

public class Game {

public final static int WIDTH = 1920, HEIGHT = 1080;

private String gameName = "Tutorial Game";

private Canvas game = new Canvas();

private Input input;

private ArrayList<Updatable> updatables = new ArrayList<>();
private ArrayList<Renderable> renderables = new ArrayList<>();

// Helper methods for update/render Arrays
public void addUpdatable(Updatable u) {
    updatables.add(u);
}

public void removeUpdatable(Updatable u) {
    updatables.remove(u);
}

public void addRenderable(Renderable r) {
    renderables.add(r);
}

public void removeRenderable(Renderable r) {
    renderables.remove(r);
}

public void start() {
    // Initialize windows
    Dimension gameSize = new Dimension(Game.WIDTH, Game.HEIGHT);
    JFrame gameWindow = new JFrame(gameName);
    gameWindow.setDefaultCloseOperation(3);
    gameWindow.setSize(gameSize);
    gameWindow.setResizable(false);
    gameWindow.setLocationRelativeTo(null);
    gameWindow.add(game);
    game.setSize(gameSize);
    game.setMinimumSize(gameSize);
    game.setMaximumSize(gameSize);
    game.setPreferredSize(gameSize);
    gameWindow.setVisible(true);

    // Initialize Input
    input = new Input();
    game.addKeyListener(input);

    // Game loop
    final int TICKS_PER_SECOND = 60;
    final int TIME_PER_TICK = 1000 / TICKS_PER_SECOND;
    final int MAX_FRAMESKIPS = 5;

    long nextGameTick = System.currentTimeMillis();
    int loops;
    float interpolation;

    long timeAtLastFPSCheck = 0;
    int ticks = 0;

    boolean running = true;
    while(running) {
        // Updating
        loops = 0;

        while(System.currentTimeMillis() > nextGameTick && loops < MAX_FRAMESKIPS) {
            update();
            ticks++;

            nextGameTick += TIME_PER_TICK;
            loops++;
        }

        // Rendering
        interpolation = (float) (System.currentTimeMillis() + TIME_PER_TICK - nextGameTick)
                      / (float) TIME_PER_TICK;
        render(interpolation);

        // FPS Check
        if(System.currentTimeMillis() - timeAtLastFPSCheck >= 1000) {
            System.out.println("FPS: " + ticks);
            gameWindow.setTitle(gameName + " - FPS: " + ticks);
            ticks = 0;
            timeAtLastFPSCheck = System.currentTimeMillis();
        }
    }                
}

private void update() {
    for(Updatable u : updatables) {
        u.update(input);
    }
}

private void render(float interpolation) {
    BufferStrategy b = game.getBufferStrategy();
    if(b == null) {
        game.createBufferStrategy(2);
        return;
    }

    Graphics2D g = (Graphics2D) b.getDrawGraphics();
    g.clearRect(0, 0, game.getWidth(), game.getHeight());
    for(Renderable r : renderables) {
        r.render(g, interpolation);
    }

    g.dispose();
    b.show();        
}
}
打包游戏;
导入java.awt.Canvas;
导入java.awt.Dimension;
导入java.awt.Graphics2D;
导入java.awt.image.BufferStrategy;
导入java.util.ArrayList;
导入javax.swing.*;
公开课游戏{
公共最终静态整数宽度=1920,高度=1080;
私有字符串gameName=“教程游戏”;
私有画布游戏=新画布();
私人投入;
private ArrayList updateables=new ArrayList();
private ArrayList renderables=new ArrayList();
//更新/渲染数组的帮助器方法
public void addupdateable(可更新的u){
添加(u);
}
公共void removeUpdateable(可更新的u){
删除(u);
}
公共void addRenderable(Renderable r){
添加(r);
}
可移除公共空间(可渲染){
可渲染。移除(r);
}
公开作废开始(){
//初始化窗口
维度gameSize=新维度(Game.WIDTH、Game.HEIGHT);
JFrame gameWindow=新JFrame(游戏名称);
gameWindow.setDefaultCloseOperation(3);
游戏窗口。设置大小(游戏大小);
gameWindow.SetResizeable(假);
gameWindow.setLocationRelativeTo(空);
游戏窗口。添加(游戏);
游戏。设置大小(游戏大小);
game.setMinimumSize(游戏大小);
game.setMaximumSize(游戏大小);
game.setPreferredSize(游戏大小);
gameWindow.setVisible(true);
//初始化输入
输入=新输入();
game.addKeyListener(输入);
//游戏循环
最终整数滴答每秒=60;
每滴答的最终整数时间=1000/滴答每秒;
最终int MAX_FRAMESKIPS=5;
long-nextGameTick=System.currentTimeMillis();
int循环;
浮点插值;
长时间AtlastFPSCheck=0;
int ticks=0;
布尔运行=真;
(跑步时){
//更新
循环=0;
while(System.currentTimeMillis()>nextGameTick&&loops=1000){
System.out.println(“FPS:+滴答声”);
gameWindow.setTitle(gameName+“-FPS:”+ticks);
滴答声=0;
timeAtLastFPSCheck=System.currentTimeMillis();
}
}                
}
私有void更新(){
for(可更新的u:可更新的){
u、 更新(输入);
}
}
私有空心渲染(浮点插值){
BufferStrategy b=game.getBufferStrategy();
如果(b==null){
游戏策略(2);
回来
}
Graphics2D g=(Graphics2D)b.getDrawGraphics();
g、 clearRect(0,0,game.getWidth(),game.getHeight());
用于(可渲染r:可渲染){
r、 渲染(g,插值);
}
g、 处置();
b、 show();
}
}

“使用……JLabel”-我不会。使用中的第二个示例是我的首选解决方案,如果您想使用窗口进行缩放,比如不查看代码,我建议您在深入了解Swing UI的工作原理和组件层次结构的工作原理之前,不要使用任何形式的表单编辑器,使用表单编辑器制作一个定制的设计是很容易的,而表单编辑器只会影响你。作为一条一般性建议,通常不鼓励直接从
JFrame
JDialog
扩展,因为它将您锁定在一个单一的用例中,这会使您的生活非常困难,您也不会为类添加任何可能重复使用的值,最好从
JPanel开始,根据需要创建所需的窗口