JAVA GUI 在窗体内“单击鼠标左键”,在光标处绘制一个“红色圆”;窗体内“单击鼠标右键”,在光标处绘制一个“绿色方框”;窗体内“双击鼠标左键”,清空所有已画“圆”和“方”。
时间: 2023-05-15 22:05:38 浏览: 89
您可以使用Java的AWT和Swing库来实现这个功能。首先,您需要创建一个继承自JFrame的窗体,并在其中添加一个MouseListener来监听鼠标事件。然后,您可以在MouseListener的回调函数中实现绘制图形的逻辑。
以下是一个简单的示例代码:
```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 MyFrame extends JFrame {
private JPanel panel;
public MyFrame() {
setTitle("Draw Shapes");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel() {
private Color color = Color.RED;
private int x, y;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (color == Color.RED) {
g.setColor(Color.RED);
g.fillOval(x, y, 50, 50);
} else if (color == Color.GREEN) {
g.setColor(Color.GREEN);
g.fillRect(x, y, 50, 50);
}
}
};
panel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
if (e.getClickCount() == 1) {
panel.color = Color.RED;
panel.x = e.getX();
panel.y = e.getY();
panel.repaint();
} else if (e.getClickCount() == 2) {
panel.color = null;
panel.repaint();
}
} else if (e.getButton() == MouseEvent.BUTTON3) {
panel.color = Color.GREEN;
panel.x = e.getX();
panel.y = e.getY();
panel.repaint();
}
}
});
add(panel);
}
public static void main(String[] args) {
MyFrame frame = new MyFrame();
frame.setVisible(true);
}
}
```
在这个示例代码中,我们创建了一个JPanel来绘制图形,并在MouseListener的回调函数中根据鼠标事件的类型和次数来设置颜色和位置,并调用repaint()方法来触发重绘。在paintComponent()方法中,我们根据颜色来绘制圆或方框。当双击鼠标左键时,我们将颜色设置为null,以清空所有已画的图形。
阅读全文