所以我已经在这个教程上工作了几天,我注意到当我写一个扩展Applet的类时,我不得不点击X两次。
当我第一次点击它时,“画布”消失但窗口仍然存在。然后第二次点击X,窗口消失。
我环顾四周,找不到任何帮助。我知道如何使用JFrame和Frame执行此操作,但我对Applet没有太多经验。
我试着像使用Frame那样做,但那不对。在写这篇文章之前,我试图抓住我的Applet的父级,希望我可以添加一个WindowListener,但是我几乎没有成功。
任何帮助都会很棒。继承我的代码......我认为问题出在init()中,但可能还有其他一些我遗漏的东西。如果你想要2D游戏java开发的参考资料,那么继续本教程的link。
package edu.KiloBotGame.njh;
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
public class Renderer extends Applet{
static int [][] map;
static int rows, cols;
public Renderer() {
// TODO Auto-generated constructor stub
}
@Override
public void init() {
setSize(800,480);
setBackground(Color.BLACK);
createTileMap();
}
private void createTileMap() {
map = new int[50][30];
rows = map.length;
cols = map[0].length;
Random r = new Random();
for(int i = 0; i < rows; i++){
for(int j = 0;j < cols; j++){
map[i][j] = r.nextInt(5);
}
}
}
@Override
public void paint(Graphics g) {
for(int i =0; i < rows; i ++){
for(int j =0; j < cols;j++){
int mod_i = i*16;
int mod_j = j*16;
switch(map[i][j]){
case 0:
g.setColor(Color.RED);
g.fillRect(mod_i, mod_j, 16, 16);
break;
case 1:
g.setColor(Color.BLUE);
g.fillRect(mod_i, mod_j, 16, 16);
break;
case 2:
g.setColor(Color.YELLOW);
g.fillRect(mod_i, mod_j, 16, 16);
break;
case 3:
g.setColor(Color.GREEN);
g.fillRect(mod_i, mod_j, 16, 16);
break;
case 4:
g.setColor(Color.ORANGE);
g.fillRect(mod_i, mod_j, 16, 16);
break;
}
}
}
}
}