Толщина линии Applet - Java
Формулировка задачи:
Добрый день!
Не могу рисовать линиями разной толщины.
При нажатии на "W" , с этого момента , толщина линии должна увеличиваться на отрезке. А у меня изменяется размер всей линии.
import java.awt.*;
import java.applet.*;
public class paint extends Applet {
boolean isBlack = true;
Point startPoint;
Point points[];
int numPoints;
boolean drawing;
int n = 0;
@Override
public void init() {
startPoint = new Point(0, 0);
points = new Point[10000];
drawing = false;
resize(300, 400);
}
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if (n == 0) {
g2.setStroke(new BasicStroke(n));
}
if (n == 1) {
g2.setStroke(new BasicStroke(5));
}
if (n == 2) {
g2.setStroke(new BasicStroke(7));
}
if (n == 3) {
g2.setStroke(new BasicStroke(9));
}
int oldX = startPoint.x;
int oldY = startPoint.y;
for (int i = 0; i < numPoints; ++i) {
g.drawLine(oldX,oldY,points[i].x,points[i].y);
g2.drawLine(oldX, oldY, points[i].x, points[i].y);
oldX = points[i].x;
oldY = points[i].y;
}
}
@Override
public boolean keyDown(Event evt, int key) {
char keyChar = (char) key;
if (keyChar == 'w') {
n++;
if (n >=3) {
n = 0;
}
}
if (keyChar == 'q') {
n--;
if (n <= 0) {
n = 3;
}
}
return true;
}
@Override
public boolean mouseDown(Event evt, int x, int y) {
if (!drawing) {
startPoint.x = x;
startPoint.y = y;
}
drawing = !drawing;
return true;
}
@Override
public boolean mouseMove(Event evt, int x, int y) {
if ((drawing) && (numPoints < 10000)) {
points[numPoints] = new Point(x, y);
++numPoints;
repaint();
}
return true;
}
}Решение задачи: «Толщина линии Applet»
textual
Листинг программы
g2.setStroke(new BasicStroke(3 + 2 * n));