如何在某个对象上单击鼠标后在屏幕上打印某些内容?

时间:2016-01-07 01:20:57

标签: java mouseevent paintcomponent mouselistener

所以我一直试图用鼠标点击我之前用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);

}

1 个答案:

答案 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

    }
}