我想将节点添加到TitledPane
的标头中。我发现这样做的唯一方法是使用setGraphic()
方法。
代码
TitledPane tpane = new TitledPane();
tpane.setContent(new Text("Content"));
tpane.setExpanded(false);
Button b = new Button("Delete");
BorderPane box = new BorderPane();
box.setLeft(new Text("1 "));
box.setCenter(new Text("Single Pane"));
box.setRight(b);
AnchorPane par = new AnchorPane(box);
tpane.setGraphic(par);
VBox vbox = new VBox();
vbox.getChildren().add(tpane);
目标
我想将Delete
按钮放在右侧,这就是我使用Borderpane
的原因。因此,BorderPane
需要填充整个TitledPane
的标头宽度减去小三角形的空间
如何在setGraphic()
方法内完成?或者有更好的方法来实现它吗?
答案 0 :(得分:2)
要解决您的问题,请尝试将BorderPane的宽度设置为场景的宽度减去这样的箭头。
TitledPane tpane = new TitledPane();
tpane.setContent(new Text("Content"));
tpane.setExpanded(false);
Button b = new Button("Delete");
BorderPane box = new BorderPane();
box.setLeft(new Text("1 "));
box.setCenter(new Text("Single Pane"));
box.setRight(b);
AnchorPane par = new AnchorPane(box);
tpane.setGraphic(par);
VBox vbox = new VBox();
vbox.getChildren().add(tpane);
box.setPrefWidth(scene.getWidth()-30);//You can adjust the number to fit your needs and change scene to whatever the name of your scene is
我希望这有帮助
答案 1 :(得分:1)
嗯,似乎对javafx用户的支持并不像主流框架那么大。
经过@Austin建议的一些尝试,我找到了做我想要的方法,这也是动态的尺寸。
box.prefWidthProperty().bind(scene.widthProperty().subtract(35));
TitledPane tpane = new TitledPane();
tpane.setContent(new Text("Content"));
tpane.setExpanded(false);
Button b = new Button("Delete");
BorderPane box = new BorderPane();
box.setLeft(new Text("1 "));
box.setCenter(new Text("Single Pane"));
box.setRight(b);
tpane.setGraphic(box);
box.prefWidthProperty().bind(scene.widthProperty().subtract(35));
VBox vbox = new VBox();
vbox.getChildren().add(tpane);