gpt4 book ai didi

按键时 Javafx imageView 旋转

转载 作者:行者123 更新时间:2023-12-02 13:34:30 28 4
gpt4 key购买 nike

基本上,当用户按键盘上的 R 时,我想将 ImageView 旋转 90 度。

@FXML
private Image arrow;
@FXML
private ImageView arrowDirection;


@FXML
public void arrowRotation(KeyEvent keyEvent)
{
if(keyEvent.getCode() == KeyCode.R)
arrowDirection.setRotate(90);
}

最佳答案

您的问题有点不具体,因此我假设您希望将 EventHandler 添加到 ImageView 所在的 Pane 中,并且希望在 Controller 中设置它。这是我的解决方案:

import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Pane;

public class FXMLDocumentController implements Initializable {

@FXML
Pane pane;

@FXML
ImageView imgView;

public void arrowRotation(KeyEvent event){
if(event.getCode().equals(KeyCode.R))
imgView.setRotate(90);
}

@Override
public void initialize(URL url, ResourceBundle rb) {
Image img = new Image("https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Javafx-layout-classes.svg/1000px-Javafx-layout-classes.svg.png");
imgView.setImage(img);
pane.sceneProperty().addListener(new ChangeListener<Scene>() {
@Override
public void changed(ObservableValue<? extends Scene> observable, Scene oldValue, Scene newValue) {
if(newValue != null){
pane.requestFocus();
}
}
});
pane.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
arrowRotation(event);
}
});

}

}

当然,这需要一个在 Pane 内保存 ImageView 的 FXML,但可以轻松调整以满足您的需求。执行旋转的函数的工作原理与您想象的非常相似,但我会尽可能使用 equals 进行比较。我向 Pane 的 sceneProperty 添加了一个监听器,以便在加载整个内容并设置场景后让 Pane 请求焦点。这意味着按下某个键实际上会触发在 Pane 上注册的 KeyEventHandler。注册 EventHandler 又很简单。希望有帮助:)

关于按键时 Javafx imageView 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43076082/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com