JavaFX EventHandler传递参数

Rectangle rect1 = new Rectangle(10, 10, 20, 20); Rectangle rect2 = new Rectangle(60, 10, 20, 20); EventHandler event = new EventHandler() { @Override public void handle(MouseEvent ae) { System.out.println("aaa"); } }; rect1.setOnMouseClicked(event); rect2.setOnMouseClicked(event); 

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

在我的真实节目中,我有数百个矩形,在这种情况下,我有很多事情要做。 所以我不想为每一个声明事件。

谢谢!

像这样:

 Rectangle rect1 = new Rectangle(10, 10, 20, 20); rect1.setUserData( "aaa" ); Rectangle rect2 = new Rectangle(60, 10, 20, 20); rect2.setUserData( "bbb" ); EventHandler event = new EventHandler() { @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); 
Interesting Posts