单击X关闭Applet

时间:2014-08-19 23:21:07

标签: java applet

所以我已经在这个教程上工作了几天,我注意到当我写一个扩展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;
                }
            }
        }
    }
}

0 个答案:

没有答案