如何立即更改矩阵中存储的JButton的背景?

时间:2019-07-14 08:55:33

标签: java swing

我正在将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循环之后都在改变

0 个答案:

没有答案