【发布时间】:2012-12-18 11:28:42
【问题描述】:
所以这基本上就是我的代码的工作方式
class Main extends JFrame implements Runnable {
public Main() {
//init everything
}
public void start() {
running = true;
Thread thread = new Thread(this);
thread.start();
}
public void run() {
while(running) {
render();
}
}
public void render() {
Image dbImage = createImage(width, height);
Graphics dbg = dbImage.getGraphics();
draw(dbg);
Graphics g = getGraphics();
g.drawImage(dbImage, 0, 0, this);
g.dispose();
}
public void draw(Graphics g) {
for(int y=0; y < map.length; y++) {
for(int x=0; x < map.length; x++) {
g.drawImage(map.map[x + y* map.MAP_DIM], x*MAP_DIM, y*MAP_DIM, this);
}
}
}
public static void main(String... args) {
Main main = new Main();
main.start();
}
}
但什么都没有画出来,我看到的都是灰色的。有谁知道可能是什么问题?我尝试在 draw() 方法结束时执行 repaint(),但仍然没有。
【问题讨论】:
-
"Swing 程序应该覆盖
paintComponent(),而不是覆盖paint()。"—Painting in AWT and Swing: The Paint Methods。此外,Swing GUI 对象应仅在event dispatch thread 上构造和操作。 -
在进行此类编码之前阅读教程,否则您将冒着做出所有错误假设并创建像上面发布的那样无法运行的代码的风险。
-
你看看教程
-
查看Performing Custom Painting 和Concurrency in Swing 以获得更多有用的提示。
标签: java user-interface drawimage