![](/img/trans.png)
[英]My JComponent will only repaint() once I manually resize the window, how do I get it to work as it should?
[英]How do I repaint my window? (Java)
编辑:它现在应该做的是打开一个新的 window 并显示标题图像(在背景上)。 当我运行它时,它只显示背景(没有错误消息或任何东西)。 是的,我稍后会做 animation,这是一个测试程序,我通过它学习在 Java 中编写游戏代码。
编辑:按照 MadProgrammer 所说的,我得到了要显示的标题图像(我没有删除while
因为我不知道用什么替换它),但它没有显示在我的列表指定的坐标处。 有任何想法吗? 或者有人知道我可以用什么代替while
?
我已经尝试了大约一百万种不同的东西,但我什至无法在屏幕上移动多个图像。 到目前为止,这是我的代码:
主class:
import java.awt.Toolkit;
import javax.swing.JFrame;
public class Game {
static JFrame window = new JFrame();
static GameCanvas canvas = new GameCanvas();
public static void main(String[] args0) {
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
window.setTitle("Fastball");
window.setIconImage(Toolkit.getDefaultToolkit().getImage("icon.png"));
window.setBounds(300, 30, 805, 625);
window.getContentPane().add(canvas);
window.setVisible(true);
mainMenu();
}
public static void mainMenu() {
canvas.addImage("title.png", 0, 0);
canvas.repaint();
}
}
Canvas class:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.util.List;
import java.awt.Toolkit;
import java.util.ArrayList;
import javax.swing.JComponent;
class GameCanvas extends JComponent {
List<String> ImagePathes = new ArrayList<String>();
List<Integer> xPositions = new ArrayList<Integer>();
List<Integer> yPositions = new ArrayList<Integer>();
int paintProgress;
Image imageToPaint;
public void addImage(String path, int x, int y) {
ImagePathes.add(path);
xPositions.add(x);
yPositions.add(y);
}
public void clearImages() {
ImagePathes.clear();
xPositions.clear();
yPositions.clear();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Image background = Toolkit.getDefaultToolkit().getImage("background.png");
g2.drawImage(background, 0, 0, this);
paintProgress = 0;
while(ImagePathes.size() > paintProgress) {
imageToPaint = Toolkit.getDefaultToolkit().getImage(ImagePathes.get(paintProgress));
g2.drawImage(imageToPaint, xPositions.get(paintProgress), yPositions.get(paintProgress), this);
paintProgress++;
}
g2.finalize();
}
}
请尽可能简单地告诉我如何修复我的代码。 并且避免将我重定向到其他问题或诸如此类的问题,因为我已经在 Google 上搜索了大约 10 亿次。 提前谢谢。 :)
看...我练习在 java 中制作 window:
import javax.swing.*;
import java.awt.*;
public class Window extends JFrame
{
JPanel pnl = new JPanel();
就是这样...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.