我编写了一个绘制网格的 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 中我想要的位置?我将不胜感激任何帮助。谢谢。
您的类扩展了 javax.swing.JFrame。因此,如果您实例化它的一个对象,这将始终是一个(新的)JFrame。
您需要将迷宫和 GUI 的代码分开。
创建一个类“
GameWindow
扩展JFrame”。在此 GameWindow 类中,您可以覆盖 Paint() 方法,并在其中调用 maze.paint() 方法。 GameWindow 的构造函数可能有一个参数来将迷宫对象输入其中。
然后可以将 GameWindow 实例集成到您的
CampaignGUI
类中。
(不要忘记从迷宫类中删除
extends JFrame
;)