如何使用jButton逐步运行线程

时间:2015-04-06 02:02:26

标签: java multithreading swing wait

我有一个线程正在运行,它不断递重地重新绘制迷宫,直到达到退出。下面的方法负责重新粉刷迷宫。

private void moveFromStep(int x, int y) {
        if(step){
            if(isWall(x,y))
                return ;
            if(isVisited(x,y))
                return ;
            if(isGoal(x,y)){
                free = true;
                JOptionPane.showMessageDialog(this, "Solution Complete: finish reachable");
            }
            if(!free){
                    step = false;
                    setVisited(x,y);
                    repaint();
                    //try {Thread.sleep(3000);} catch (Exception e) { }
                    //try {wait();} catch (Exception e) { }
                    moveFromStep(x-1,y);
                    moveFromStep(x+1,y);
                    moveFromStep(x,y-1);
                    moveFromStep(x,y+1);            
            }
        }   
   }

现在我有一个单独运行的JPanel,我想逐步重新绘制它。 我想通过使用" Step"按钮。因此,当" Step"按下按钮。下面的代码是按钮的动作监听器

public void actionPerformed(ActionEvent event) {

            String action = event.getActionCommand();
            MazeStep mazeStep = new MazeStep();
            Thread mazeThreadStep = null;

            if (action.equals("Load Maze")) {
                mazeAnim.readFile(getName());
                //mazeStep = new MazeStep();
                mazeStep.readFile(getName());
            }
            else if(action.equals("Start")){
                JFrame world = new JFrame();
                mazeStep = new MazeStep();
                mazeStep.readFile(getName());
                world.setSize(300, 300);
                world.setTitle("Maze solver");
                world.setContentPane(mazeStep);
                world.setVisible(true);
                mazeThreadStep = new Thread(mazeStep);
                mazeThreadStep.start();
            }
            if(action.equals("Step")){
                mazeStep.step = true;
                synchronized (mazeThreadStep) {
                    mazeThreadStep.notify();
                  }
            }

    }

所以任何人都可以帮助我实现这个目标。

0 个答案:

没有答案