在JavaFx中使用滑块移动圆
我正在尝试创建一个程序,该程序能够使用滑块移动位于圆心的圆。我搞不懂的是如何将圆连接到滑块,以便在滑块移动时它移动。 感谢您的帮助。以下是我的代码:在JavaFx中使用滑块移动圆,javafx,slider,Javafx,Slider,我正在尝试创建一个程序,该程序能够使用滑块移动位于圆心的圆。我搞不懂的是如何将圆连接到滑块,以便在滑块移动时它移动。 感谢您的帮助。以下是我的代码: public class Main extends Application { @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); //Definisanje
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
//Definisanje Hedera
Label Seminarski = new Label("");
Button Reset = new Button("Reset");
Reset.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
}
});
HBox HBoxHeader = new HBox();
HBoxHeader.setPadding(new Insets(15, 12, 15, 12));
HBoxHeader.setSpacing(10);
HBoxHeader.setStyle("-fx-background-color: #ffffff;");
HBoxHeader.getChildren().addAll(Seminarski, Reset);
//Kraj Hedera
//Definisanje Lopte
Circle Lopta = new Circle(10, Color.RED);
//Kraj Lopte
//Definisanje Slajdera
Slider Slajder = new Slider();
//Kraj Slajdera
Lopta.rateProperty().bind(Slajder.valueProperty());
//Definisanje Futera
HBox HBoxFooter = new HBox();
HBoxFooter.setPadding(new Insets(15, 12, 15, 12));
HBoxFooter.setSpacing(10);
HBoxFooter.getChildren().addAll(Slajder);
//Kraj Futera
//Dodavanje u BorderPane
root.setTop(HBoxHeader);
root.setCenter(Lopta);
root.setBottom(HBoxFooter);
//Kraj Dodavanja
Scene scene = new Scene(root,500,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
public类主扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
试一试{
BorderPane根=新的BorderPane();
//德菲尼萨耶·赫德拉
标签Seminarski=新标签(“”);
按钮重置=新按钮(“重置”);
重置设置动作(新建EventHandler首先,不要使用BorderPane。这会限制节点布局控制。此外,不推荐使用变量命名约定。在这个小应用程序中,我将根目录设置为VBox,并添加了一个带有圆圈、按钮和滑块的窗格。我没有使用bind,因为我没有太多使用它。我使用了一个移动的值更改侦听器滑块值更改时的圆
import javafx.application.*;
import javafx.beans.value.*;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.stage.*;
/**
*
* @author Sedrick
*/
public class JavaFXApplication39 extends Application {
@Override
public void start(Stage primaryStage)
{
Circle circle = new Circle(10, Color.RED);
circle.setCenterX(10);
circle.setCenterY(10);
Pane pane = new Pane();
pane.setMinHeight(200);
pane.getChildren().add(circle);
Button btn = new Button();
btn.setText("reset");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event)
{
System.out.println("Hello World!");
}
});
VBox root = new VBox();
root.getChildren().add(pane);
Slider slider = new Slider();
slider.valueProperty().addListener((
ObservableValue<? extends Number> ov, Number old_val,
Number new_val) -> {
circle.setCenterX(new_val.doubleValue());
});
root.getChildren().add(slider);
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
launch(args);
}
}
导入javafx.application.*;
导入javafx.beans.value.*;
导入javafx.event.*;
导入javafx.scene.*;
导入javafx.scene.control.*;
导入javafx.scene.layout.*;
导入javafx.scene.paint.*;
导入javafx.scene.shape.*;
导入javafx.stage.*;
/**
*
*@作者塞德里克
*/
公共类JavaFXApplication39扩展了应用程序{
@凌驾
公共无效开始(阶段primaryStage)
{
圆圈=新圆圈(10,颜色为红色);
圆。setCenterX(10);
圆整(10);
窗格=新窗格();
窗格玻璃设置最小高度(200);
pane.getChildren().add(圆圈);
按钮btn=新按钮();
btn.setText(“重置”);
设定动作(新建EventHandler以获得更好的解释。您应该显示一些代码,并显示您为此所做的实际尝试。请参阅:哦,对不起,我将尽快发布代码,我现在不在计算机旁。我已用代码更新了问题,很抱歉给您带来不便。的示例。您可以调整实现以圆圈的centerX/centerY属性而不是layoutX/layoutY属性为基础。您好。我在计算机上测试了代码,这正是我想做的,但我对侦听器中的代码不熟悉(我是新手)。如果不麻烦,您能解释一下以下代码的作用吗?slider.valueProperty().addListener((observeValue