我試圖在javafx中創建一個自定義的工具欄。該工具欄應該能夠在其表面的中心,左側和右側(三個部分)顯示控件。 問題是,我不知道要實現這一點。我讀了很多有關這個問題的提示,但他們不爲我工作,或者我做錯了什麼...如何用javaFX中的左邊,中間和右邊部分創建工具欄?
無論如何,我寫了幾種方法,它們代表不同的方式來實現我的工具欄,但沒有正常工作。 在這裏你有我的嘗試:
使用HBox的Hgrow屬性作爲春天。沒有工作。
public ToolBar createToolBar() { ToolBar toolBar = new ToolBar(); Pane emptyPane = new Pane(); HBox spring = new HBox(emptyPane); spring.setHgrow(emptyPane, Priority.ALWAYS); toolBar.getItems().addAll(spring, new Label("LABEL")); return toolBar; }
2.It工程爲左,右部分,但如何定義中心嗎?
public AnchorPane createToolBar2()
{
AnchorPane toolBar = new AnchorPane();
Label leftLabel = new Label("left");
Label rightLabel = new Label("right");
toolBar.getChildren().addAll(leftLabel, rightLabel);
toolBar.setLeftAnchor(leftLabel, 0.0);
toolBar.setRightAnchor(rightLabel, 0.0);
return toolBar;
}
該方法可以很好地用於佈局,但因爲這些由右側部分覆蓋我不能監聽來自左邊和中間部分事件(StackPane的原因) ,所以這個解決方案也沒用。
public StackPane createToolBar3() { StackPane toolBar = new StackPane(); Button left = new Button("left button"); Button right = new Button("right button"); Button center = new Button("center button"); HBox leftSection = new HBox(left); leftSection.setAlignment(Pos.CENTER_LEFT); HBox centerSection = new HBox(center); centerSection.setAlignment(Pos.CENTER); HBox rightSection = new HBox(right); rightSection.setAlignment(Pos.CENTER_RIGHT); toolBar.getChildren().addAll(leftSection, centerSection, rightSection); left.setOnAction(event -> System.out.println("left")); right.setOnAction(event -> System.out.println("right")); center.setOnAction(event -> System.out.println("center")); return toolBar; }
上面的方法,我在調用的代碼塊:
@Override
public void start(Stage stage) {
BorderPane borderPane = new BorderPane();
borderPane.setPrefWidth(500);
borderPane.setPrefHeight(300);
borderPane.setTop(createToolBar4());
stage.setScene(new Scene(borderPane));
stage.show();
}
我會在該問題的任何幫助表示感謝。
看看[這篇文章](http://stackoverflow.com/a/30826914/1759128)。您可以用各自的控件替換帖子中的ImageView,Image和VBox。 – ItachiUchiha