当前位置: 首页 > 知识库问答 >
问题:

JavaFx-交互式排序应用程序

燕玉堂
2023-03-14

我正在开发一个交互式排序应用程序。我必须将数字表示为矩形,并且例如,当排序算法运行时,当两个数字互换时,矩形必须互换。我想用动画来做这件事。我如何交换矩形?我目前正在使用transition测试这个功能,但我遇到了一些问题。我有两个矩形在一组。当我尝试交换矩形时,两者会在中间相遇并停止。代码如下:

    Rectangle r1 = rectangles.get(numbers[0]);
    Rectangle r2 = rectangles.get(numbers[1]);

    TranslateTransition translateTransition = new TranslateTransition();

    translateTransition.setNode(r1);
    translateTransition.setDuration(Duration.millis(1000));
    translateTransition.setFromX(r1.getX());
    translateTransition.setToX(r2.getX());

    TranslateTransition translateTransition2 = new TranslateTransition();

    translateTransition2.setNode(r2);
    translateTransition2.setDuration(Duration.millis(1000));
    translateTransition2.setFromX(r2.getX());
    translateTransition2.setToX(r1.getX());
    translateTransition2.play();

    translateTransition.play();

我需要一个类似于帆布的窗格。我需要能够设置矩形坐标。

共有1个答案

尹承泽
2023-03-14

TranslateTransition与节点的TranslateX属性一起工作。因此,如果您使用setlayout定位矩形,relocate或仅使用构造函数参数TranslateTransition将不适用。

您要么需要开始使用TranslateX坐标,要么使用Timeline代替TranslateTransition

您可以阅读更多关于布局的内容,并在JavaDoc中进行布局翻译

下面是基于translateX的交换示例:

public void start(Stage primaryStage) {
    final Rectangle r1 = new Rectangle(50, 50, Color.RED);
    final Rectangle r2 = new Rectangle(50, 50, Color.BLUE);

    // note I use translate to position rectangles
    r1.setTranslateX(50);
    r2.setTranslateX(250);

    Button btn = new Button();
    btn.setText("Move it");
    btn.relocate(100, 100);
    btn.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            double x1 = r1.getTranslateX();
            double x2 = r2.getTranslateX();

            TranslateTransition translateTransition = new TranslateTransition();
            translateTransition.setNode(r1);
            translateTransition.setDuration(Duration.millis(1000));
            translateTransition.setToX(x2);

            TranslateTransition translateTransition2 = new TranslateTransition();
            translateTransition2.setNode(r2);
            translateTransition2.setDuration(Duration.millis(1000));
            translateTransition2.setToX(x1);

            translateTransition2.play();
            translateTransition.play();
        }
    });

    Pane root = new Pane();
    root.getChildren().addAll(btn, r1, r2);

    Scene scene = new Scene(root, 400, 350);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}
 类似资料:
  • 问题内容: 我通常使用java.lang.ProcessBuilder和java.lang.Process来运行外部命令行程序,并且对运行和完成命令运行良好。例如,这将在工作目录中运行带有参数“ myArg”的“ myProgram”: 但是,假设我想运行脚本或程序或具有交互式输入的内容(启动后提示我提供更多输入)。我可以使用与上面类似的代码在Java中执行此操作,还是需要其他方法?还是有一些图书

  • 问题内容: 我对通过Python调用控制交互式CLI应用程序感兴趣。 我想在最基本的层次上,我需要一个Python脚本,它将在主机操作系统上启动CLI应用程序。将任何内容从标准输入传送到CLI应用程序,然后将任何输出从CLI应用程序传送到标准输出。 从这个基础上,对输入和输出进行一些处理应该非常简单。 老实说,我可能只需要一个关于该技术被称为的指针。我不知道我要寻找什么。 问题答案: PExpec

  • 我注册了一个SlashCommand。。。但它的回答是“交互应用程序的命令无效”,有人能帮忙吗。。。

  • 我正在使用docker compose创建一个react应用程序。Dockerfile文件和docker文件组成。yml已创建,但生成应用程序时出错。 Dockerfile docker-compose.yml 文件夹体系结构是: docker撰写。yml docker应用程序/软件包。json应用程序/src/ 执行docker compose up-d--build命令时,会出现以下错误。 构

  • 本文向大家介绍ruby开发的交互式程序例子,包括了ruby开发的交互式程序例子的使用技巧和注意事项,需要的朋友参考一下 实现pry,ronin,msf类似的终端下交互功能,这里主要用到了ripl gem: 1.能够调用定义的方法,如help 2.能够执行系统命令 3.能够类似irb/pry进行ruby语言解析 安装: 示例 ripl这个gem,它也提供很多插件,如下是一个简单的终端下交互实现: 使

  • 在Spark bin目录下的spark-submit可以用来在集群上启动应用程序。它可以通过统一的接口使用Spark支持的所有集群管理器 ,所有你不必为每一个管理器做相应的配置。 用spark-submit启动应用程序 bin/spark-submit脚本负责建立包含Spark以及其依赖的类路径(classpath),它支持不同的集群管理器以及Spark支持的加载模式。 ./bin/spark-s