在下面的程序中,只要在面板或框架上单击鼠标,就会改变形状的颜色。但我想只在鼠标单击该形状时才更改颜色。有没有办法在不使用位置的情况下这样做?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Colorchange extends JFrame {
public Colorchange() {
setTitle("Change Color on click");
setSize(500,500);
MyPanel pane=new MyPanel();
add(pane);
}
public static void main(String[] args) {
Colorchange ob=new Colorchange();
ob.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ob.setVisible(true);
}
}
class MyPanel extends JPanel {
int x=200,y=200,r=50;
Color co=Color.RED;
public MyPanel() {
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
co=Color.YELLOW;
repaint();
}
});
}
public void paintComponent(Graphics g) {
g.setColor(co);
g.fillOval(x-r, y-r, 2*r, 2*r);
}
}
答案 0 :(得分:1)
您需要创建该形状的对象。 向对象添加位置。 在OnMouseClick上,检查鼠标位置是否等于形状位置。
祝你好运。
答案 1 :(得分:1)
在重新绘制之前,只需检查光标的x,y位置
//...
public MyPanel() {
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
if(me.getX() >= (x-r) && me.getX() < (x+r) && me.getY() >= (y-r) && me.getY() < (y+r)) {
co=Color.YELLOW;
repaint();
}
}
});
}
//...