我有一个问题..好吧,我使用此代码来获取节点的坐标
Bounds localToScreen = myNode.localToScene(myNode.getBoundsInLocal());
localToScreen.getMinX();
localToScreen.getMinY();
localToScreen.getWidth();
localToScreen.getHeight();
但是这段代码有时会起作用,而在其他时候它会显示错误的结果..那么使用这段代码有什么特别之处吗?为什么它不能随时工作?在scenebuilder中,所有节点的坐标都是正确的。
这是一个例子
我的fxml文件是
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane fx:id="anchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="test.FXMLDocumentController">
<children>
<HBox fx:id="hbox" layoutX="147.0" layoutY="67.0" prefHeight="34.0" prefWidth="200.0">
<children>
<TextField />
<Button mnemonicParsing="false" text="Button" />
</children>
</HBox>
</children>
</AnchorPane>
我的控制器是 公共类FXMLDocumentController实现Initializable {
@FXML
private AnchorPane anchor;
@FXML
private HBox hbox;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
Bounds localToScreen = hbox.localToScene(hbox.getBoundsInLocal());
System.out.print(""+
localToScreen.getMinX() +" "+
localToScreen.getMinY() +" "+
localToScreen.getWidth()+" "+
localToScreen.getHeight()
);
// TODO
}
结果是
147.0 67.0 0.0 0.0
宽度和高度不应为0!
请帮助..谢谢