gpt4 book ai didi

java - PaintComponent 方法不起作用 - Java

转载 作者:行者123 更新时间:2023-12-01 18:10:15 25 4
gpt4 key购买 nike

当我使用此代码时,我的屏幕将是空的。所以这意味着我的paintComponent 方法有问题。但有什么问题呢?我该如何解决它?我的预期输出是一个深灰色矩形和一个图像。

代码:

package _47b3n.seg.main.engine;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import _47b3n.seg.main.frame.Frame;

public class Engine extends JPanel {

public int xOff;
public int yOff;
public int x;
public int y;
public int fpsInt = 199;

public boolean isRunning = true;

public FPS fps = new FPS();

public static void main(String [] args) {
Frame frame = new Frame();
frame.setFrame(800, 600, "Super easy game", "0.0.1");
new Engine();
}

public Engine() {
start();
}

public void move() {
x+=xOff;
y+=yOff;
}

public void start() {
Thread loop = new Thread () {
public void run() {
gameLoop();
addKeyListener(new keyInput());
}
};
loop.start();
}


public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.DARK_GRAY);
g.fillRect(10, 10, 10, 10);
g.drawImage(new ImageIcon("Poppetje.jpg").getImage(), x, y, null);
}

public void gameLoop() {
while(isRunning) {
move();
repaint();
fps.update();
fpsInt++;
if (fpsInt == 200) {
System.out.println("[Console] " + fps.getFPS() + " FPS");
fpsInt = 0;
}
try {Thread.sleep(17);} catch (InterruptedException e) {e.printStackTrace();}
}
}

public class keyInput extends KeyAdapter {

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();

if(key == KeyEvent.VK_W) {
yOff = -1;
}

if (key == KeyEvent.VK_S) {
yOff = 1;
}

if (key == KeyEvent.VK_A) {
yOff = -1;
}

if (key == KeyEvent.VK_D) {
xOff = 1;
}
}

public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();


if (key == KeyEvent.VK_W) {
yOff = 0;

}

if (key == KeyEvent.VK_S) {
yOff = 0;
}

if (key == KeyEvent.VK_A) {
xOff = 0;
}

if (key == KeyEvent.VK_D) {
xOff = 0;
}

}

}

}

谢谢

最佳答案

不知道这是否是唯一的问题,但您从未将面板添加到框架中:

//new Engine();
Engine engine = new Engine();
frame.add(engine);
frame.setVisible(true);

关于java - PaintComponent 方法不起作用 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com