我正在将BFS算法与JButtons结合使用以进行可视化。每次访问按钮时,我想将其背景颜色更改为蓝色。但是,只有在算法完成后颜色才会改变。
似乎revalidate()和repaint()方法不起作用。
while(!frontier.isEmpty())
{
Position current = frontier.poll();
if(current.equals(endPosition))
{
System.out.println("Destination found");
break;
}
for(Position p:getNeighbours(current))
{
System.out.println(p.x+" "+p.y);
if(matrix[p.x][p.y].getBackground()==Color.WHITE)
{
matrix[p.x][p.y].setBackground(Color.BLUE);
matrix[p.x][p.y].setText((++index).toString());
matrix[p.x][p.y].revalidate();
matrix[p.x][p.y].repaint();
}
if(!cameFrom.containsKey(p))
{
frontier.add(p);
cameFrom.put(p, current);
}
}
}
我希望颜色在每一步都会改变。提示他们在整个while循环之后都在改变