Эй, я хочу создать программу, в которой вы можете рисовать многоугольник, например, Круг, Прямоугольник, Линия. Когда я нажимал кнопку круга и рисовал Круг (1), а затем, когда я щелкал прямоугольник, он должен рисовать только прямоугольник, а не круг и прямоугольник (2). ), Когда я щелкнул Линия, она должна рисовать только Линия, а не Круг, а Прямоугольник и Линия (3).
public class Images extends JComponent {
private Image image;
private Graphics2D g2;
private int currentX, currentY, oldX, oldY;
public Images() {
setDoubleBuffered(false);
}
protected void paintComponent(Graphics g) {
if (image == null) {
image = createImage(getSize().width, getSize().height);
g2 = (Graphics2D) image.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
clear();
}
g.drawImage(image, 0, 0, null);
}
public void line() {
currentX = 0;
currentY = 0;
oldX = 0;
oldY = 0;
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
oldX = e.getX();
oldY = e.getY();
}
});
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
currentX = e.getX();
currentY = e.getY();
g2.draw(new Line2D.Double(oldX, oldY, currentX, currentY));
repaint();
}
});
}
public void rectangle() {
currentX = 0;
currentY = 0;
oldX = 0;
oldY = 0;
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
oldX = e.getX();
oldY = e.getY();
}
});
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
currentX = e.getX();
currentY = e.getY();
g2.draw(new Rectangle2D.Double(oldX, oldY, currentX - oldX, currentY - oldY));
repaint();
}
});
}
public void circle() {
currentX = 0;
currentY = 0;
oldX = 0;
oldY = 0;
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
oldX = e.getX();
oldY = e.getY();
}
});
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
currentX = e.getX();
currentY = e.getY();
g2.draw(new Ellipse2D.Double(oldX, oldY, (currentX - oldX), (currentX - oldX)));
repaint();
}});}}