所以我一直试图用鼠标点击我之前用mouseClicked方法在屏幕上绘制的某个对象后打印线。我正在从一个填充了drawable元素的arrayList中绘制元素。这是我的代码:
ShapeSh s = new VertexG(x,y,Window.graph2);
((VertexG) s).addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e){
ShapeSh z = (VertexG)e.getSource();
System.out.println("some text");
}
});
不打印“某些文字”。我究竟做错了什么? :(这就是我从数组中绘制元素的方式:
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(ShapeSh shape: drawingList){
shape.drawThis(g);
}
}
public void drawThis(Graphics g){
g.setColor(c);
g.fillOval(x,y,2*radius,2*radius);
g.setFont(f);
g.setColor(c2);
g.drawString(value, x-8, y-8);
}
答案 0 :(得分:0)
如果你想在点击鼠标时做点什么,试试这个mehtond" mousePressed(MouseEvent e)"而不是" mouseEntered(MouseEvent e)"
试试这个。私有MouseClickListener。
private class MapMouseClickListener implements MouseInputListener {
@Override
public void mouseClicked(MouseEvent e) {
int clickButtonType = e.getButton();
// BUTTON3 is the right mouse button.
if (clickButtonType == MouseEvent.BUTTON3) {
System.out.println("some text");// and whatever you want to active.
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}