【问题标题】:JavaFX EventHandler pass parameterJavaFX EventHandler 传递参数
【发布时间】:2014-05-29 07:33:03
【问题描述】:
    Rectangle rect1 = new Rectangle(10, 10, 20, 20);
    Rectangle rect2 = new Rectangle(60, 10, 20, 20);

    EventHandler<MouseEvent> event = new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent ae) {
            System.out.println("aaa");
        }
    };

    rect1.setOnMouseClicked(event);
    rect2.setOnMouseClicked(event);

如何点击rect1打印aaa,点击rect2打印bbb?

在我的实际程序中,我有数百个矩形,实际上,我有很多事情要做。所以我不想为每个人声明事件。

谢谢!

【问题讨论】:

    标签: java javafx eventhandler


    【解决方案1】:

    像这样:

    Rectangle rect1 = new Rectangle(10, 10, 20, 20);
    rect1.setUserData( "aaa" );
    
    Rectangle rect2 = new Rectangle(60, 10, 20, 20);
    rect2.setUserData( "bbb" );
    
    EventHandler<MouseEvent> event = new EventHandler<MouseEvent>() 
    {
        @Override
        public void handle( final MouseEvent ME ) 
        {
            Object obj = ME.getSource();  // you can also try ME.getTarget()
    
            if ( obj instanceof Rectangle )
            {
                System.out.println( ((Rectangle) obj).getUserData() );
            }
        }
    };
    
    rect1.setOnMouseClicked(event);
    rect2.setOnMouseClicked(event);     
    

    【讨论】:

    • 太棒了!完美的!谢谢!
    猜你喜欢
    • 2016-01-07
    • 2012-01-28
    • 2013-05-20
    相关资源
    最近更新 更多