gpt4 book ai didi

java - 尝试使巨大的图像(与场景 View 相比)移动

转载 作者:行者123 更新时间:2023-12-01 18:47:16 24 4
gpt4 key购买 nike

我正在尝试使用键盘使图像“移动”。在场景本身中重新定位图像。我确实设法在图像上添加 setOnMouseClicked() 并更改位置,但它似乎不适用于箭头键。假设我做错了什么。

代码如下:

public class DEPImageMovement extends Application {

@Override
public void start(Stage primaryStage) {

Pane pane = new Pane();
pane.setStyle("-fx-background-color: RED");

Image img = new Image("Images/mappy.jpg");
final double centerX = img.getWidth()/2, centerY = img.getHeight()/2;

ImageView imgw = new ImageView(img);
imgw.setX(-centerX);
imgw.setY(-centerY);
imgw.setOnKeyPressed(a ->
{
switch (a.getCode())
{
case UP: {
imgw.setY(imgw.getY()-50); System.out.println("Up"); break;}

case DOWN: {
imgw.setY(imgw.getY()+50); System.out.println("Down"); break;}

case LEFT:{
imgw.setX(imgw.getX()-50); System.out.println("Left"); break;}

case RIGHT:{
imgw.setX(imgw.getX()+50); System.out.println("Right"); break;}

default:{
System.out.println("Default"); break;}
}
});
pane.getChildren().add(imgw);
Scene scene = new Scene(pane, 250 ,250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}

public static void main(String[] args) {
launch(args);
}

}

我想使用箭头键移动图像。如果有任何更简单的解决方案可用,只要它们使用更少或更简单的代码/正确的语法解决相同的问题,这些解决方案也非常受欢迎。我只是在玩弄它,试图通过多种方式学习如何做到这一点。

最佳答案

已经有一个控件似乎可以提供您所追求的行为:ScrollPane 。如果你不想要任何滚动条那么你可以设置hbarPolicyvbarPolicy属性为ScrollBarPolicy.NEVER 。您可能还需要考虑设置 pannable属性设置为true

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class App extends Application {

@Override
public void start(Stage primaryStage) {
ScrollPane root = new ScrollPane(new ImageView(/* your image */));
root.setHbarPolicy(ScrollBarPolicy.NEVER);
root.setVbarPolicy(ScrollBarPolicy.NEVER);
root.setPannable(true);
primaryStage.setScene(new Scene(root, 1000, 650));
primaryStage.show();
}
}

如果您将 ScrollPane 聚焦(例如通过单击它),则箭头键将水平/垂直滚动 ImageView。但请注意,您将无法按照当前代码允许的方式“过度滚动”。

关于java - 尝试使巨大的图像(与场景 View 相比)移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59805797/

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