oum*_*iop 1 layout netbeans javafx button java-8
我正在使用NetBeans IDE 8.2 for JavaFX.我已经知道,为了改变按钮的位置,我需要使用setLayoutX/Y. 我试过这个,对按钮没有任何影响.这是我的代码:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javafxapplication2;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
*
* @author coolDawg1234
*/
public class JavaFXApplication2 extends Application {
@Override
public void start(Stage primaryStage) {
String x = "1";
String y = "0";
Button btn1 = new Button(x);
btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.print(x);
}
});
Button btn2 = new Button(y);
btn2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.print(y);
}
});
StackPane root = new StackPane();
root.getChildren().add(btn1);
btn1.setLayoutX(250);
btn1.setLayoutY(220);
root.getChildren().add(btn2);
btn1.setLayoutX(200);
btn1.setLayoutY(200);
Scene scene = new Scene(root, 1000, 1000);
primaryStage.setTitle("WHAT\'s GOOD MY MANS");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
Netbeans为此给出了0个错误,除了按钮位置以外的所有内容对我来说都很好.
请帮我找到问题所在.
按钮的容器是一个StackPane.StackPane是一种实现方式Pane,默认情况下,它将子项布置在其自身的中心.因此,每当场景需要执行布局时,StackPane将根据自己的布局策略在其方法中设置layoutX和layoutY值(因此覆盖您设置的任何内容)layoutChildren().对于大多数(如果不是全部)子类,会发生此行为Pane.
如果需要手动定位子节点,则需要使用通用Pane容器.您可以选择子类化它并提供自己的布局策略/逻辑,或者直接在子节点上设置layoutX和layoutY值.
如果您需要提供的布局策略StackPane,但是您希望它的位置与默认位置略有不同,那么您可能正在寻找translateXProperty()和translateYProperty().
| 归档时间: |
|
| 查看次数: |
2532 次 |
| 最近记录: |