如何在JavaFX场景中定位按钮(或任何GUI元素)?

user-interface button javafx position fxml

45897 观看

2回复

124 作者的声誉

我试图将UIFX按钮放在UI上的特定位置(特定坐标),但没有任何工作。我猜有一个方法用于此,但我找不到它。

作者: Milos Maksimovic 的来源 发布者: 2012 年 4 月 5 日

回应 (2)


22

698 作者的声誉

决定

你可以使用窗格。setLayoutX()和setLayoutY()。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;

public class Tester extends Application {


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

@Override
public void start(Stage primaryStage) {
    primaryStage.setTitle("Hello World!");
    Button btn = new Button();
    btn.setText("'Hello World'");
    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            System.out.println("Hello World!");
        }
    });

    Pane root = new Pane();
    btn.setLayoutX(250);
    btn.setLayoutY(220);
    root.getChildren().add(btn);
    primaryStage.setScene(new Scene(root, 300, 250));
    primaryStage.show();
}
}
作者: Vinod CG 发布者: 05.04.2012 01:28

0

6123 作者的声誉

layoutXlayoutY

<Button text="Button" layoutX="50" layoutY="100" />

在FXML中,您可以使用从中继承的layoutXlayoutY属性javafx.scene.Node

根据JavaFX文档

layoutX

定义为了布局而添加到此节点变换的平移的x坐标。

layoutY

定义为了布局而添加到此节点变换的平移的y坐标。

下面的示例生成一个窗口,其中Button元素的位置为x坐标50和y坐标100

sample.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.Scene?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.control.Button?>

<Scene>
  <Pane prefWidth="300" prefHeight="300">
    <!-- Button Positioned Using layoutX and layoutY -->
    <Button text="Button" layoutX="50" layoutY="100" />
  </Pane>
</Scene>

Main.java

package sample;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.fxml.FXMLLoader;

public class Main extends Application {
  @Override
  public void start(Stage primaryStage) throws Exception {
    Scene scene = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Window Title");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

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

注意:您还可以使用setLayoutX()setLayoutY()方法在控制器中动态设置layoutXlayoutY属性的值,而不是通过标记。此外,您可以使用UI元素标记中的layoutXlayoutY标记(即<layoutX><layoutY>)来设置FXML标记内的x坐标和y坐标,作为使用属性的替代方法。

作者: Grant Miller 发布者: 02.03.2019 04:45
32x32