例如,我有一个类,我在其中编写了一个创建Polyline对象的方法。请注意我如何使用 solution.setTranslateY(315),这会在我的javafx窗口中将Polyline向下移动。
public Polyline getSolution()
{
Polyline solution = new Polyline();
solution.setStrokeWidth(3);
for (int i = 0; i < coordinates; i = i + 2)
solution.getPoints().addAll(puzzle[i], puzzle[i + 1]);
solution.setTranslateY(315);
//translates this solution farther down the display window
return solution;
}
正如您所看到的,我通过将它放在一个组中,然后将该组添加到我的程序的场景中,在创建的对象上实现这个“getSolution()”方法。
public void start(Stage primaryStage) throws FileNotFoundException
{
Scanner input = new Scanner(System.in);
System.out.println("Enter the name of the input file: ");
String fileName = input.nextLine();
ConnectTheDotsPuzzle heart = new ConnectTheDotsPuzzle(fileName);
// When the user inputs the file, it gets sent to the constructor
Line blueLine = new Line(0, 300, 500, 300);
//line between puzzle and solution
blueLine.setStroke(Color.BLUE);
blueLine.setStrokeWidth(3);
Text solutionText = new Text(20, 335, "Solution:");
solutionText.setFont(Font.font("Times", FontWeight.BOLD, 24));
Group group = new Group(heart.getPuzzle(), heart.getSolution(),
blueLine, solutionText);
// grouping everything together to put in the scene
Scene scene = new Scene(group, 500,
300);
primaryStage.setTitle("Connect the Dots");
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setOnCloseRequest(e -> System.exit(0));
}
我的问题是:有没有办法让我不必在我创建的初始方法中翻译我的Polyline对象?如何在启动方法中将其调低?如果我想创建多个这样的对象并且并不总是希望它是315,我想知道如何能够在我的start方法中更改它,而不是让它在我的方法中不断变换。 / p>
答案 0 :(得分:0)
你可以更容易定制的一种方法是将降档作为getSolution()方法的参数。或者,在集团宣言之上,你可以说
Polyline solution = heart.getSolution();
solution.setTranslateY(315);
然后用组声明中的解决方案替换getSolution()。
答案 1 :(得分:0)
建议的方法
通常,如果要在场景中自动布局节点,则使用layout pane而不是非托管父节点,例如Group。
例如,要在垂直方向添加一堆Polyline心脏解决方案,您可以使用VBox:
VBox solutionsView = new VBox(10);
for (int i = 0; i < 10; i++) {
solutionsView.getChildren().add(heart.getSolution())
}
除了翻译与布局之外
translateX / Y通常用于调整动画属性以暂时移动内容(例如,通过TranslateTransition)。不使用translateX/Y属性来布置节点,而是使用layoutX/Y属性,这些属性专门用于此目的。另请注意,在内部,布局窗格将自动更新其子节点的layoutX / Y值,作为布局窗格布局布局的一部分(因此,在使用适当的布局窗格时,无需显式设置这些值)。