JavaFXEventHandler传递参数 Rectangle rect1=新矩形(10,10,20,20); 矩形rect2=新矩形(60,10,20,20); EventHandler事件=新的EventHandler(){ @凌驾 公共无效句柄(MouseEvent ae){ 系统输出打印项次(“aaa”); } }; rect1.setOnMouseClicked(事件); rect2.setOnMouseClicked(事件);

JavaFXEventHandler传递参数 Rectangle rect1=新矩形(10,10,20,20); 矩形rect2=新矩形(60,10,20,20); EventHandler事件=新的EventHandler(){ @凌驾 公共无效句柄(MouseEvent ae){ 系统输出打印项次(“aaa”); } }; rect1.setOnMouseClicked(事件); rect2.setOnMouseClicked(事件);,java,javafx,eventhandler,Java,Javafx,Eventhandler,如何单击rect1打印aaa,单击rect2打印bbb 在我的实际程序中,我有数百个矩形,在这种情况下,我有很多事情要做。所以我不想为每个人都声明事件 谢谢 像这样: Rectangle rect1 = new Rectangle(10, 10, 20, 20); Rectangle rect2 = new Rectangle(60, 10, 20, 20); EventHandler<MouseEvent> event = new EventHandler

如何单击rect1打印aaa,单击rect2打印bbb

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

谢谢

像这样:

    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);
Rectangle rect1=新矩形(10,10,20,20);
rect1.setUserData(“aaa”);
矩形rect2=新矩形(60,10,20,20);
rect2.setUserData(“bbb”);
EventHandler事件=新的EventHandler()
{
@凌驾
公共无效句柄(最终MouseEvent ME)
{
Object obj=ME.getSource();//您也可以试试ME.getTarget()
if(矩形的obj实例)
{
System.out.println(((矩形)obj.getUserData());
}
}
};
rect1.setOnMouseClicked(事件);
rect2.setOnMouseClicked(事件);

太棒了!完美的非常感谢。
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);