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) {
}
}
をクリックしている障害物があるかどうかに基づいて描画したり、消去するかどうかを決定することができます。