[英]Adding MouseListener to Graphics Object
I'm struck in a what it seems to be a minor problem. 我对似乎是一个小问题感到震惊。 I tried to add MouseListener to Line2D object but it's not working.
我试图将MouseListener添加到Line2D对象,但无法正常工作。 Is the method or tried is invalid or I can do it another way.
该方法或尝试过的方法无效还是我可以用另一种方法来做。 Help me figure out what I'm doing wrong here.
帮我弄清楚我在做什么错。
public class DrawingLines {
public static void main(String[] args){
LineFrame lf = new LineFrame();
lf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lf.setVisible(true);
}
}
class LineFrame extends JFrame{
public LineFrame(){
setTitle("Line test");
setSize(500, 500);
LinesPanel lp = new LinesPanel();
Container contentpane = getContentPane();
contentpane.add(lp);
}
}
class LinesPanel extends JPanel{
public LinesPanel(){
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Line2D line = new Line2D.Double(105.5, 306.6, 350.8, 4.9);
g2.draw(line);
line.addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Line Clicked !");
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
}
}
Add the MouseListener to the LinesPanel. 将MouseListener添加到LinesPanel。 And use the MouseEvent coordinates to check whether the click is close to the line.
并使用MouseEvent坐标检查单击是否靠近直线。
See How to select a line 请参阅如何选择线
Line组件没有可单击区域,因此鼠标监听器无法正常工作,您可能想要做的是在其上添加一个不可见的正方形/矩形/多边形来代替鼠标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.