我正在尝试为鼠标拖动的事件创建一个EventHandler。我将使用同一个处理程序对多个ImageView执行相同的操作。这就是我所做的。
static EventHandler<MouseEvent> dragHandler = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
e.getSource().toFront();
e.getSource().setTranslateX(e.getSceneX() );
e.getSource().setTranslateY(e.getSceneY() );
}
};
但显然,我不能使用toFront或setTranslate方法或任何我用于ImageView的方法,因为e.getSource返回一个对象,而这些是对象类型无法使用的ImageView方法。显然,我也不能简单地将其转换为ImageView
(ImageView)( e.getSource() ).toFront();
我可以简单地使用内部类和lambda表达式,但我认为必须有一种更有效的方法,而不仅仅是对每个ImageView复制粘贴15次相同的行。如果有,请告诉我。
提前感谢。
强制转换可以工作,但强制转换的优先级低于取消引用的优先级(),因此您的代码示例尝试向下转换
(e.getSource())的结果。toFront()
,它不起作用(因为它没有类型,因为toFront()是void)。
所以
((ImageView) e.getSource() ).toFront();
会有用的。
然而,通常最好为每个图像视图注册不同的处理程序。无需重复代码:只需使用任何标准编程技术即可避免重复代码。E、 g.你可以写一个方法:
private void registerEventHandler(ImageView imageView) {
imageView.setOnMouseDragged(e -> {
imageView.toFront();
imageView.setTranslateX(e.getSceneX() );
imageView.setTranslateY(e.getSceneY() );
});
// register other event handlers, as needed.
}
然后为每个图像视图调用该方法(如果在某些合适的数据结构中有循环)。
或者,您可以创建一个方法来创建图像视图并注册任何必要的处理程序。
除了可以说更干净的代码之外,这些技术还可以避免向下转换,这通常是一件好事。
我在我们公司做项目,我有一个注入对象的问题。让我们考虑一下我有这个实体提供商: 并使用上面的实体提供程序扩展JPAContainer 问题是(我理解),我无法使用类类型定义@Inject对象,因为Inject方法需要一个空构造函数。这里有什么解决方案吗?如何让它发挥作用?现在我得到了一个例外 非常感谢您的回答:)Ondrej
有人能举一个简单的例子来说明如何设置EventHandler以在窗格(JavaFX)上拖动图像视图。对于拖动,我的意思是在图像上按下鼠标,拖动和图像应该跟随,然后释放鼠标,图像视图将停止在该位置。
问题内容: 嗨,我将以下结构嵌套在一个更大的结构中,该结构是通过api调用返回的,但是我无法对这部分进行编码/解码。我遇到的问题是customKey和customValue都是动态的。 我尝试了类似的操作,但是显然不起作用,因为它实际上不是的数组。 问题答案: 由于您将我的答案链接到另一个问题,因此我将扩展该问题以回答您的问题。 事实是,如果您知道要查找的位置,那么所有键在运行时都是已知的: 用法
当然,这段代码不起作用。因为get()和set()方法。我可以用那样的东西吗?
我想通过spring data JPA中的查询方法从子类中获取数据。不想使用jpql或标准API。我想获得所有与指定accountType和User的连接。我知道jpql以及标准api将完成这项工作,但我想用JPA查询方法实现这一点。下面是我的实体和回购代码。 这是主实体类 下面是存储库 repo中的findByUserIdAndconnectionTypeAccountType方法不正确,所以我
我是Oracle的初学者,我声明了这个对象类型: 我希望在我的存储过程中使用该对象: 但是当编译过程时,我得到了这个错误: 错误(2,14):PLS-00201:必须声明标识符“T1” 我怎样才能写出正确的程序?谢谢大家。