如何在小程序中使用面板?

How to use panels in applets?


我需要编写一个战略游戏,其中包含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;

            }

        }

    }

其次,我要把我的window分成三部分! (一个最大的部分,用于主要背景,2个小部分(一个用于显示我在大地图中的位置的小地图,一个用于显示信息))

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

对这种情况有什么建议吗?谢谢

将所有内容写成一个 class 可能不是最好的主意。您绝对应该将您的 Filereader 存储在另一个 class.

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

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

创建一个新的 JPanel,您可以在其中执行所有 "main background"-paintig 操作。调用 JApplet 的 setContentPane 以添加此 JPanel。

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

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

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