如何在applet中使用面板?

时间:2015-06-11 12:40:03

标签: java applet awt


我需要写一个包含awt panel的战略游戏。

场景: -
首先,我需要从txt文件(我的地图)中读取并根据txt文件绘制我的图像。 (我在下面的代码中做到了。)

public class temp extends JApplet implements Runnable,MouseListener {

public void init() {
    setSize(1400,800 );
    setBackground(Color.BLACK);

}
@Override
public void start() {
    tilemap = new int[60][75];
    filereader();
    Thread thread = new Thread(this);
    thread.start();


}

@Override
public void paint(Graphics g) {

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            int mod_i = 100*i;
            int mod_j = 50*j;
            g.setColor(Color.red);
            String str = String.valueOf(tilemap[i][j]);
            g.drawString(str,mod_i,mod_j);

            switch (tilemap[i][j]) {
            case 1:
                g.drawImage(asfalt,mod_i,mod_j,this);
                break;
            case 2://it means everywhere u read 2, so draw a tree
                g.drawImage(tree,mod_i,mod_j,this);
                break;

            }

        }

    }

其次,我必须将我的窗口划分为3个部分! (一个最重要的部分,主要背景,和两个小部分(一个用于显示我在大地图中的位置和一个用于显示信息的迷你地图))

问题: - 我怎么能分开呢?我应该使用面板还是边框? 我也必须使用容器,因为我的地图太大而且我必须滚动它。

对此方案有何建议?感谢

1 个答案:

答案 0 :(得分:0)

在一个班级中编写所有内容可能不是最好的主意。你绝对应该将你的Filereader存储在另一个类中。

顺便说一句,不要混合awt和Swing。使用JApplet和JPanel或Applet和Panel。

为什么要使用边框?您可以另外使用Borders,但这与您的结构无关。

创建一个新的JPanel,你可以在其中执行所有“主要背景”-paintig的内容。调用JApplet的setContentPane来添加此JPanel。

例如对此JPanel使用BorderLayout。为地图和信息再创建2个JPanel,只需将这些JPanel添加到主JPanel中。

如果您需要JPanel的透明背景,请使用setOpaque - JPanel方法。

如果您的地图(或您的迷你地图)是静态的,那么将您的图像一次绘制到BufferedImage并绘制BufferedImage可能是个好主意。