Java 尝试使海量图像(与场景视图相比)四处移动
我试图用键盘使图像“移动”。在场景本身内重新定位图像。我确实成功地在图像上添加了setOnMouseClicked()并更改了位置,但它似乎无法使用箭头键。假设我做错了什么 代码如下:Java 尝试使海量图像(与场景视图相比)四处移动,java,javafx,Java,Javafx,我试图用键盘使图像“移动”。在场景本身内重新定位图像。我确实成功地在图像上添加了setOnMouseClicked()并更改了位置,但它似乎无法使用箭头键。假设我做错了什么 代码如下: public class DEPImageMovement extends Application { @Override public void start(Stage primaryStage) { Pane pane = new Pane(); pane
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);
}
}
我想使用箭头键移动图像。如果有任何更简单的解决方案可用,只要它们使用更少或更简单的代码/正确的语法来解决相同的问题,那么它们也非常受欢迎。我只是在玩弄它,试图通过多种方式学习如何做 注意:通过将setOnActionPressed()操作附加到场景而不是图像本身,成功修复了此问题。:-)(愚蠢的错误)
不过,如果有人有更好的想法或其他方法来解决这个问题,请带他们进来 已经有一个控件似乎提供了您所追求的行为:。如果不需要任何滚动条,则可以将和属性设置为。您还可以考虑将属性设置为<代码> true./P>
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.control.ScrollPane;
导入javafx.scene.control.ScrollPane.ScrollBarPolicy;
导入javafx.scene.image.ImageView;
导入javafx.stage.stage;
公共类应用程序扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
ScrollPane root=新建滚动窗格(新建图像视图(/*您的图像*/);
setHbarPolicy(ScrollBarPolicy.NEVER);
setVbarPolicy(ScrollBarPolicy.NEVER);
root.setPannable(true);
原始阶段。设置场景(新场景(根,1000650));
primaryStage.show();
}
}
如果聚焦于滚动窗格
(例如通过单击它),则箭头键将水平/垂直滚动图像视图
。但是,请注意,在当前代码允许的情况下,您将无法“overscroll”