如何设置AnchorPane(未声明)的位置?

时间:2015-10-30 14:16:28

标签: javafx

我花了很长时间搜索如何向AnchorPane添加位置(未声明的方式如此:setMethode(new AnchorPane());)。 添加Layout (x,y),设置Pref(Width and Height)

我试过了,但它没有工作:

           .someMethode(new AnchorPane(
                   .setLayoutX(12);
                   .setLayoutY(222);
                   .setPrefWidth(1026);
           ));

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可能正在引用的是双括号初始化(请参阅What is Double Brace initialization in Java?)。你需要这样写:

.someMethode(new AnchorPane() {{
               setLayoutX(12);
               setLayoutY(222);
               setPrefWidth(1026);
       }});

但是我认为这是一个不好的做法,因为你使用双括号初始化创建了一个新的匿名类。

备选方案:

  • 使用变量

    AnchorPane pane = new AnchorPane();
    pane.setLayoutX(12);
    pane.setLayoutY(222);
    pane.setPrefWidth(1026);
    ...
    <some expression>.someMethode(pane);
    
  • 创建一个方法:

    static AnchorPane createAnchorPane(double layoutX, double layoutY, double prefWidth) {
        AnchorPane pane = new AnchorPane();
        pane.setLayoutX(layoutX);
        pane.setLayoutY(layoutY);
        pane.setPrefWidth(prefWidth);
        return pane;
    }
    ....
    <some expression>.someMethode(createAnchorPane(12, 22, 1026));
    
  • AnchorPane s
  • 创建构建器
  • 使用fxml和FXMLLoader,它允许您从文件创建节点结构。以这种方式创建更大的节点结构可能更容易。这将是AnchorPane
  • 的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 prefWidth="1026" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" layoutX="12" layoutY="222" >
    <!-- add something else here??? -->
</AnchorPane>