鼠标事件在Java中不起作用:

时间:2014-08-17 13:41:00

标签: java swing mouseevent

MouseEvents无法在Java中运行: 当我拖动鼠标时没有任何反应。该程序应该在拖动时绘制。

继承主要课程:

public class GUI {


public static void main(String[] args) {

    simpledrawing xx = new simpledrawing();
    JFrame x = new JFrame();
    x.add(xx,BorderLayout.SOUTH);
    x.add(new JLabel("Drag to draw"),BorderLayout.NORTH);
    x.setSize(450,450);
    x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    x.setVisible(true);
}

}

继承事件监听器类

public class simpledrawing extends JPanel{
private int pc =0;
private Point[] points = new Point[10000];

public simpledrawing(){
     System.out.print("Entered Constructor");
    addMouseMotionListener(
    new MouseMotionAdapter(){
     @Override   
    public void mouseDragged(MouseEvent e){
            System.out.print("Dragging Mouse");
            if(pc<points.length){
                points[pc] = e.getPoint();
                ++pc;
                repaint();
            }
        }
    });

  }

public void paintComponent( Graphics g )
{
    super.paintComponent( g );
    for( int i=0; i < pc; i++ )
    g.fillOval(points[i].x ,points[i].y , 4, 4);
}

2 个答案:

答案 0 :(得分:4)

public void MouseDragged(MouseEvent e){

Java区分大小写。方法名称应以小写字符开头:

public void mouseDragged(MouseEvent e){

编辑:

此外,在进行自定义绘制时,您必须覆盖面板的getPreferredSize()方法以返回面板所需的尺寸,否则尺寸为(0,0)并且没有任何颜色可供绘制。

阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。

最后,类名以大写字母开头。遵循Java标准,不要制定自己的约定。

答案 1 :(得分:0)

小组必须具有针对性:

在simpledrawing构造函数中调用this:setFocusable(true)。

在旁注中,您应该用大写字母命名您的班级。并且不要将对象命名为x或xx,这使得阅读更加困惑。