18 votes

Comment positionner un bouton (ou tout élément d'interface graphique) dans une scène JavaFX ?

J'essaie de placer un bouton JavaFX à un endroit spécifique (coordonnées spécifiques) sur une interface utilisateur, mais rien ne fonctionne. Je suppose qu'il existe une méthode utilisée à cet effet, mais je ne la trouve pas.

30voto

Vinod CG Points 329

Vous pouvez utiliser les fonctions pane. setLayoutX() et 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();
}
}

2voto

Grant Miller Points 6261

layoutX y layoutY

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

En FXML, vous pouvez utiliser la fonction layoutX y layoutY qui sont héritées de javafx.scene.Node .

Selon le Documentation JavaFX :

layoutX

Définit la coordonnée x de la translation qui est ajoutée à la transformation de ce nœud à des fins de mise en page.

layoutY

Définit la coordonnée y de la translation qui est ajoutée à la transformation de ce nœud à des fins de mise en page.

L'exemple ci-dessous donne lieu à une fenêtre dans laquelle se trouve une Button est positionné avec une coordonnée x de 50 et une coordonnée y de 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);
  }
}

Note : Vous pouvez également utiliser le setLayoutX() y setLayoutY() pour définir les valeurs de l'élément layoutX y layoutY dynamiquement dans le contrôleur, plutôt que par le biais du balisage. En outre, vous pouvez utiliser la fonction layoutX y layoutY (c'est-à-dire <layoutX> y <layoutY> ) dans la balise de l'élément UI pour définir les coordonnées x et y dans le balisage FXML au lieu d'utiliser des attributs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X