UIの特定の場所(特定の座標)にJavaFXボタンを配置しようとしていますが、何も機能しません。これに使用される方法があると思いますが、それを見つけることができません。
ペインを使用できます。 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();
}
}
layoutX
およびlayoutY
<Button text="Button" layoutX="50" layoutY="100" />
FXMLでは、 layoutX
および layoutY
javafx.scene.Node
から継承されるプロパティを使用できます。
JavaFX Documentation によると:
layoutX
レイアウトのためにこのノードの変換に追加される変換のx座標を定義します。
layoutY
レイアウトのためにこのノードの変換に追加される移動のy座標を定義します。
以下の例では、 Button
要素が50
のx座標と100
のy座標で配置されたウィンドウが表示されます。
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()
も使用できますlayoutX
およびlayoutY
プロパティの値を、マークアップを介さずにコントローラーで動的に設定するメソッド。さらに、UI要素タグ内でlayoutX
およびlayoutY
タグ(つまり、<layoutX>
および<layoutY>
)を使用して、x座標と属性を使用する代わりに、FXMLマークアップ内のy座標。