JavaFX EventHandler 传递参数

标签 java javafx eventhandler

    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?

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

谢谢!

最佳答案

像这样:

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);     

关于JavaFX EventHandler 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23928132/

相关文章:

java - 多个 JButton 的一个事件处理程序

java - 如何使用 gradle 获取 Hibernate Search Lucene 的所有依赖项?

java - Android GPU 分析 - OpenGL 动态壁纸很慢

java - 如何才能比 WorkManager 的 15 分钟上限更快地轮询设备以获取位置数据?

JavaFX ScrollBar 值混淆

java - 在 JavaFX 中对 MouseEvent 和 KeyEvent 使用相同的 EventHandler?

java - Eclipse、Java、导入突然不再被识别

java - 如何阻止 Javafx 上的文本溢出

JavaFX 拆分菜单按钮箭头触发事件

java - 如何向 JavaFX Tab 添加多个选项卡关闭事件处理程序?