Java MouseListener图形实现

时间:2014-03-28 01:02:18

标签: java swing graphics jpanel mouselistener

所以我试图在我的程序中实现一个鼠标监听器,我让mouseListener工作但不是图形。我每次在JPANEL上点击鼠标时都试图找到一种绘制蓝色圆圈的方法,唯一的问题是我似乎无法对图形进行良好的调用(我试图命名为g)。

    import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;
import javax.swing.JPanel;



class moveItMon extends JPanel implements MouseListener{

    public moveItMon() {
        this.setPreferredSize(new Dimension(500, 500));
        addMouseListener(this);
    }

    public void addNotify() {
        super.addNotify();
        requestFocus();
    }

    public void mouseClicked(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
    public void mouseReleased(MouseEvent e) {
        movetehMon(e);
    }

    public void movetehMon(MouseEvent e){
        int x = e.getX();
        int y = e.getY();
        System.out.println("(" + x + "," + y + ")");
        paintMon(x,y);
    }
    public void paintMon( int x, int y){
        Graphics g = new Graphics();
        g.setColor(Color.WHITE);
        g.clearRect(0,0,500,500);
        g.setColor(Color.BLUE);
        g.fillOval(x,y,20,20);
    }

    public static void main(String[] s) {
        JFrame f = new JFrame("moveItMon");
        f.getContentPane().add(new moveItMon());
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }


}

1 个答案:

答案 0 :(得分:1)

Graphics g = new Graphics();不会起作用(因为我确定你知道),因为这个类是抽象的。

Swing中的自定义绘制是通过覆盖从paintComponent扩展的组件的JComponent(如JPanel)并使用提供的Graphics上下文绘制来完成的。

请查看Performing Custom PaintingPainting in AWT and Swing了解详情

你还应该注意绘画是一个破坏性的过程,这意味着每次调用paintComponent时,你都需要更新你需要绘制的所有东西。