我正在创建一个小型 JPanel 程序来生成迷宫。我所有的代码都有效,但我想展示迷宫生成的实际效果。我编辑了我的程序以使paintComponent 函数显示正在进行的迷宫。但是我在另一个类中,它正在传递我的 JPanel 对象,因此它可以“刷新”显示。
我应该怎么做才能调用paintComponent函数来绘制所有单元格并刷新显示?
这是面板的配置:
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
gamePanel = new GamePanel();
controlPanel = new ControlPanel();
mainPanel.add(gamePanel, BorderLayout.CENTER);
mainPanel.add(controlPanel, BorderLayout.SOUTH);
mainPanel.revalidate();
这是预期在重绘时调用的代码:
protected void paintComponent(Graphics pen){
if(started){
int count=0;
for (MapCell c:coms){
if (c.type!='w'){
count++;
}
c.paint(pen);
}
System.out.println("White space: " +count);
System.out.println("Components: "+coms.size());
for(Anno an:mapGen.ans){
an.draw(pen,img,colWidth,rowHeight);
}
}
迷宫生成后打印语句工作正常,但仅绘制图像“Anno”并在其后面留下痕迹。我已确认该列表正在获取正确的数据。