用Java绘制一个窗体 窗体内“单击鼠标左键”,在鼠标处绘制一个“绿圆” 窗体内“单击鼠标右键”,在鼠标处绘制一个“红色方框” 窗体内“双击鼠标左键”,清空所有已画“圆”和“方”
时间: 2023-10-29 20:04:40 浏览: 32
以下是实现上述功能的Java代码:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawShapes extends JPanel {
private int x;
private int y;
private boolean drawCircle = false;
private boolean drawSquare = false;
public DrawShapes() {
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
x = e.getX();
y = e.getY();
drawCircle = true;
repaint();
} else if (e.getButton() == MouseEvent.BUTTON3) {
x = e.getX();
y = e.getY();
drawSquare = true;
repaint();
}
}
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
drawCircle = false;
drawSquare = false;
repaint();
}
}
});
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (drawCircle) {
g.setColor(Color.GREEN);
g.fillOval(x, y, 50, 50);
}
if (drawSquare) {
g.setColor(Color.RED);
g.fillRect(x, y, 50, 50);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Draw Shapes");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.add(new DrawShapes());
frame.setVisible(true);
}
}
```
在上述代码中,我们创建了一个名为`DrawShapes`的类,该类继承自`JPanel`,并实现了`MouseListener`接口。在类的构造函数中,我们为面板添加了一个鼠标监听器,以便捕获鼠标事件。
当单击鼠标左键时,我们记录鼠标的坐标,并将`drawCircle`标志设置为`true`,以便在下一次绘制面板时绘制绿色圆形。当单击鼠标右键时,我们记录鼠标的坐标,并将`drawSquare`标志设置为`true`,以便在下一次绘制面板时绘制红色方框。
当双击鼠标左键时,我们将`drawCircle`和`drawSquare`标志都设置为`false`,以便清空所有已绘制的形状。
在`paintComponent`方法中,我们根据`drawCircle`和`drawSquare`标志的值来绘制相应的形状。如果`drawCircle`为`true`,则绘制绿色圆形;如果`drawSquare`为`true`,则绘制红色方框。
最后,在`main`方法中,我们创建了一个`JFrame`窗体,并将`DrawShapes`面板添加到其中。我们设置了窗体的标题、关闭操作和大小,并将其设置为可见。