User interface 如何在JavaFX场景中定位按钮(或任何GUI元素)?
我试图将JavaFX按钮放在UI上的特定位置(特定坐标),但没有任何效果。我猜有一种方法可用于此,但我找不到它。您可以使用窗格。setLayoutX()和setLayoutY()User interface 如何在JavaFX场景中定位按钮(或任何GUI元素)?,user-interface,button,javafx,position,fxml,User Interface,Button,Javafx,Position,Fxml,我试图将JavaFX按钮放在UI上的特定位置(特定坐标),但没有任何效果。我猜有一种方法可用于此,但我找不到它。您可以使用窗格。setLayoutX()和setLayoutY() 导入javafx.application.application; 导入javafx.event.ActionEvent; 导入javafx.event.EventHandler; 导入javafx.scene.scene; 公共类测试仪扩展应用程序{ 公共静态void main(字符串[]args){ 发射(args
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
公共类测试仪扩展应用程序{
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
公共无效开始(阶段primaryStage){
setTitle(“你好,世界!”);
按钮btn=新按钮();
btn.setText(“你好,世界”);
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
System.out.println(“你好,世界!”);
}
});
窗格根=新窗格();
btn.setLayoutX(250);
btn.setLayoutY(220);
root.getChildren().add(btn);
原始阶段。设置场景(新场景(根,300250));
primaryStage.show();
}
}
layoutX
和layoutY
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);
}
}
注意:您还可以使用和方法在控制器中动态设置和属性的值,而不是通过标记。此外,您可以在UI元素标记中使用and标记(即
和
)来设置FXML标记内部的x坐标和y坐标,作为使用属性的替代方法
<Button text="Button" layoutX="50" layoutY="100" />
<?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>
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);
}
}