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

拖动滑块时更新标签

连德水
2023-03-14

我在javaFX项目中使用了一个滑块,我有一个标签,当我移动滑块时会更新。

我希望在拖动滑块时更新标签,而不仅仅是在拖放时。

这是我的代码:

 betSlider.valueChangingProperty().addListener(new ChangeListener<Boolean>() {
            @Override
            public void changed(ObservableValue<? extends Boolean> source, Boolean oldValue, Boolean newValue) {
                betLabel.textProperty().setValue(String.valueOf((int)betSlider.getValue()));
  } });

共有3个答案

桑璞
2023-03-14

如果你想完全在FXML中完成,你可以这样做:

<TextField prefWidth="50" text="${speedSlider.value}"/>
<Slider fx:id="speedSlider" orientation="HORIZONTAL" prefWidth="300"
        min="60" max="100000" blockIncrement="100"/>
汲睿
2023-03-14

将标签的textProperty绑定到滑块的valueProperty。

绑定中需要进行格式转换才能使其工作。

Itachi的valueProperty()ChangeListener或绑定都可以工作。

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Slide extends Application {
    @Override public void start(Stage stage) {   
        Label  label  = new Label();
        Slider slider = new Slider(1, 11, 5);

        label.textProperty().bind(
            Bindings.format(
                "%.2f",
                slider.valueProperty()
            )
        );

        VBox layout = new VBox(10, label, slider);
        layout.setStyle("-fx-padding: 10px; -fx-alignment: baseline-right");

        stage.setScene(new Scene(layout));
        stage.setTitle("Goes to");
        stage.show();
    }

    public static void main(String[] args) { launch(args); }
}
柯凯旋
2023-03-14

您只需将valueChangingProperty()更改为valueProperty()和TADA,它就可以正常工作!

此处附上一个小样本:

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Demo extends Application {

    @Override
    public void start(Stage primaryStage) {
        // Add a scene
        VBox root = new VBox();
        Scene scene = new Scene(root, 500, 200);

        final Label betLabel = new Label("sdsd");

        final Slider betSlider = new Slider();
        betSlider.valueProperty().addListener(new ChangeListener<Number>() {

                @Override
                public void changed(
                   ObservableValue<? extends Number> observableValue, 
                   Number oldValue, 
                   Number newValue) { 
                      betLabel.textProperty().setValue(
                           String.valueOf(newValue.intValue());
                  }
            }
        });

        root.getChildren().addAll(betSlider, betLabel);
        betLabel.textProperty().setValue("abc");

        // show the stage
        primaryStage.setTitle("Demo");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
 类似资料:
  • 我有一个JavaFXML项目。它有一个从1到10的滑块,步骤为1。我有一个标签。 滑块=<代码>sl\U测试 标签=

  • 问题内容: 我一直在寻找有关如何执行此操作的答案,但似乎无法弄清楚(甚至在查看jQuery UI主题文档时也是如此)。当我从左向右移动滑块时,我希望滑块旋钮左侧的部分变为橙色(而不是默认的灰色)。 jQuery主题卷生成了以下CSS。大概.ui-widget- header背景色可以控制它,但是似乎没有。也不向其他任何类别添加背景色。知道如何解决此问题,以便在水平滑动时获得不同的颜色吗? JQUE

  • 我尝试使用onTabSelected来检测某个片段何时被选中,然后在接口的帮助下从该片段启动一个方法(下面的代码)。 但是,当使用Start方法时,在尝试更新TextView时会激发NullPointerException。start方法的代码是: 在以下行抛出异常: 是的,我已经在网上查过了所有可用的东西,但似乎没有任何东西对我有用。 非常感谢您的帮助!

  • 我想简单地通过单击按钮添加新节点(我有jsPlumb源代码endpoint在拖动源代码容器时不会移动,我已经尝试了建议的答案,但仍然不适用于我)。 不幸的是,当我拖动新节点时,endpoint(应该坚持覆盖)没有更新它的位置。endpoint将在我鼠标悬停endpoint后更新它的位置。 这是小提琴 '$('#addNode')。单击(函数(e){var newAgent = $('').attr

  • 使用Material CDK库中的拖放行为,我试图在拖动元素时更改光标。 例如,在此StackBlitz中,光标悬停时为。我希望它在拖动时变为抓取。这方面的一个例子是在Google工作表中抓取一行时发生的情况: 读取样式化拖放组件的留档,看起来向这个类添加游标属性应该可以做到这一点: . cdk-drop-list-draging:当用户拖动项目时添加到cdkDropList的类。 代码如下所示:

  • 我有以下代码,它插入行到名为luczekInfo的表和函数从数据库中获取数据。我的问题是如何使函数在get(id)函数返回的行上更新表luczekInfo中的列。用滑头更新列值的最佳方法是什么? 提前感谢您的回答。