2016-12-10 18 views
1

描画ボタンをクリックするたびに、描画するか消去するかを決める方法を見つけるのに苦労しています。現時点ではJavaの描画/消去ボタン

private void drawButtonActionPerformed (java.awt.event.ActionEvent evt) { 

     solveButton.setEnabled(true); 

     slider.setEnabled(true); 

     captureButton.setEnabled(true); 

    } 

私のコードは、PLSのおかげで、私を助けて自動的に

private class MouseHandler implements MouseListener, MouseMotionListener { 

     int cur_row, cur_col, cur_val; 



     @Override 
     public void mousePressed(MouseEvent evt) { 


      int row = (evt.getY() - 10)/squareSize; 
      int col = (evt.getX() - 10)/squareSize; 
      if (row >= 0 && row < rows && col >= 0 && col < columns) { 

       cur_row = row; 
       cur_col = col; 
       cur_val = grid[row][col]; 

       if (cur_val == EMPTY) { 
        grid[row][col] = OBST; 
       } 
       if (cur_val == OBST) { 
        grid[row][col] = EMPTY; 
       } 
       repaint(); 
      } 
     } 

     @Override 
     public void mouseDragged(MouseEvent evt) { 

      int row = (evt.getY() - 10)/squareSize; 
      int col = (evt.getX() - 10)/squareSize; 
      if (row >= 0 && row < rows && col >= 0 && col < columns) { 

       if ((row * columns + col != cur_row * columns + cur_col) && (cur_val == STARTNODE || cur_val == ENDNODE)) { 
        int new_val = grid[row][col]; 
        if (new_val == EMPTY) { 
         grid[row][col] = cur_val; 
         if (cur_val == STARTNODE) { 
          startnodeStart.row = row; 
          startnodeStart.col = col; 
         } else { 
          endnodePos.row = row; 
          endnodePos.col = col; 
         } 
         grid[cur_row][cur_col] = new_val; 
         cur_row = row; 
         cur_col = col; 
         if (cur_val == STARTNODE) { 
          startnodeStart.row = cur_row; 
          startnodeStart.col = cur_col; 
         } else { 
          endnodePos.row = cur_row; 
          endnodePos.col = cur_col; 
         } 
         cur_val = grid[row][col]; 
        } 
       } else if (grid[row][col] != STARTNODE && grid[row][col] != ENDNODE) { 
        grid[row][col] = OBST; 
       } 

      } 

      repaint(); 

     } 

     @Override 
     public void mouseReleased(MouseEvent evt) { 
     } 

     @Override 
     public void mouseEntered(MouseEvent evt) { 
     } 

     @Override 
     public void mouseExited(MouseEvent evt) { 
     } 

     @Override 
     public void mouseMoved(MouseEvent evt) { 
     } 

     @Override 
     public void mouseClicked(MouseEvent evt) { 
     } 

    } 

をクリックしている障害物があるかどうかに基づいて描画したり、消去するかどうかを決定することができます。

答えて

0

私はコードを読んでいませんでしたが(非常に長くて不明ですが)、あなたがしたいと思っていることをしたいのであれば(あなたが描いたプログラムを持っていて、マウスのボタンが押されているときに、マウスのxとyに特定の色の円を描くだけです。耳を傾けたいときは、同じことを背景色で行うだけです。

関連する問題