- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图弄清楚如何一次更改多个按钮的 OnMouseReleaseEvent。该应用程序是一个屏幕钢琴,我想删除释放事件,以便弹奏的音符能够持续,而不是在短按一下后关闭。
我的代码片段适用于一个键:
@FXML
public void changeOnMouseRelease(){
if (getOriginalEvent() == null) {
setOriginalEvent(keyC.getOnMouseReleased());
}
if (getOriginalEvent() == keyC.getOnMouseReleased()) {
keyC.setOnMouseReleased(event -> {
System.out.println("Mouserelease-Event empty \n");
});
} else keyC.setOnMouseReleased(getOriginalEvent());
}
}
这些是原始事件的 getter 和 setter:
private void setOriginalEvent(EventHandler originalEvent){
this.originalEvent = originalEvent;
}
private EventHandler getOriginalEvent(){
return this.originalEvent;
}
当我尝试这个时,它不起作用:
@FXML
public void changeOnMouseRelease(){
for(Button b : pianoKeys) { // pianoKeys is just an array of the 13 piano buttons
if (getOriginalEvent() == null) {
setOriginalEvent(b.getOnMouseReleased());
}
if (getOriginalEvent() == b.getOnMouseReleased()) {
b.setOnMouseReleased(event -> {
System.out.println("Mouserelease-Event empty \n");
});
} else b.setOnMouseReleased(getOriginalEvent());
}
}
我假设它与 getter/setter 有关,但我不确定如何正确处理这个问题。
最佳答案
通过向事件处理程序添加 MouseEvent
参数,您可以使用此信息来检索按下的 Button
。您可以将允许您选择如何处理按键的信息与 Button
关联起来,例如使用用户数据
:
@FXML
private void onMouseReleased(MouseEvent event){
Button b = (Button) event.getSource();
System.out.println("released key "+b.getUserData());
}
@FXML
private void onMousePressed(MouseEvent event){
Button b = (Button) event.getSource();
System.out.println("pressed key "+b.getUserData());
}
...
<Button onMousePressed="#onMousePressed" onMouseReleased="#onMouseReleased" userData="D#" />
...
<小时/>
这消除了循环遍历按钮的需要。
关于java - 如何更改多个按钮的MouseReleaseEvent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894107/
我尝试实现一种在按下 SVG 按钮时更改背景并在释放时重置背景的方法。我的问题是,当我隐藏调用 mousePressEvent 的 QSvgWidget 时,没有调用 mouseReleaseEven
我想使用python和pyqt5制作裁剪图像工具 下面的代码,我无法使用 mouseMoveEvent 和 mouseReleaseEvent图形 View 。 但是,我只能在图形 View 上使用
我不确定我做错了什么,基本上我想在 mouserelease 事件发生时发出一个信号(自定义)。 Class myWidget(QWidget): def mouseReleaseEvent(se
我有一个显示图片的库,我们称它为 PictureGLWidget,其中: class PictureGLWidget: public QGLWidget { 因此 PictureGLWidget 扩展
有没有办法设置全局mouseReleaseEvent? 我的意思是我有 QMainWindow 和它 QFrame 和 init QListView 和它我有构造 QListView 的小部件,在小部
在使用 PyQt5 编写的 Python 3.5 应用程序内部,我有如下的 mouseReleaseEvents self.scene1.mouseReleaseEvent = self.setSce
我的应用程序由一个 WebView 小部件组成。鼠标点击小部件不是由我的应用程序的 mousePressEvent() 处理,而是由 WebView 小部件处理。所以,我安装了一个事件过滤器来接收事件
我是一名优秀的程序员,十分优秀!