如何让这个网格显示在另一个jframe中?

问题描述 投票:0回答:1

我编写了一个绘制网格的 MazeClass,并且有一个方法可以更改网格上块的颜色。我想在 jframe 上的一个单独的类中以我想要的位置显示此网格。这是课程:

package mazemania;

import java.awt.*;

public class MazeClass extends javax.swing.JFrame{
    
    private Color[][] colorArr = new Color[20][20];
    
    public MazeClass(){
        setVisible(true);
    }
    
    public void paint(Graphics g)
    {
        for(int row = 0; row < 20; row++)
        {
            for(int column = 0; column < 20; column++)
            {
                g.setColor(colorArr[row][column]);
                g.fillRect(row*15, column*15, 15, 15);
                g.setColor(Color.BLACK);
                g.drawRect(row*15, column*15, 15, 15);
            }
        }
    }   //End of paint method
        
    
    public void colorBlock(Color c, int row, int col)
    {
        colorArr[row][col] = c;
        repaint();
    }
    
}

我尝试从另一个类实例化 MazeClass,但它创建了单独的 jpanel,而不是将其放在类中的 jpanel 上。

package mazemania;


import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.Graphics;

/**
 *
 * @author jin06
 */
public class CampaignGUI extends javax.swing.JFrame {

    
    //PauseGUI pauseScreen = new PauseGUI();
    
    /**
     * Creates new form CampaignGUI
     */
    public CampaignGUI() {
        initComponents();
        MazeClass maze = new MazeClass();
        maze.colorBlock(Color.RED, 1, 1);
        maze.setVisible(true);   
    }

如何将此网格放置在我已经设计的 GUI 中我想要的位置?我将不胜感激任何帮助。谢谢。

java grid jframe jpanel paint
1个回答
0
投票

您的类扩展了 javax.swing.JFrame。因此,如果您实例化它的一个对象,这将始终是一个(新的)JFrame。

您需要将迷宫和 GUI 的代码分开。

创建一个类“

GameWindow
扩展JFrame”。在此 GameWindow 类中,您可以覆盖 Paint() 方法,并在其中调用 maze.paint() 方法。 GameWindow 的构造函数可能有一个参数来将迷宫对象输入其中。

然后可以将 GameWindow 实例集成到您的

CampaignGUI
类中。

(不要忘记从迷宫类中删除

extends JFrame
;)

© www.soinside.com 2019 - 2024. All rights reserved.