我需要在屏幕上创建一个工具栏,它有多个按钮,每个按钮必须有多行文本。例如:
我查看了互联网和StackOverflow,但我无法找到任何显示如何在JavaFX中执行此操作的内容。我正在使用JavaFX 8。
有人可以帮助我吗?
韩国社交协会
答案 0 :(得分:7)
您也可以使用wrapTextProperty
。但是您必须将工具栏高度设置为大于预期的按钮高度。
Button btn = new Button();
btn.wrapTextProperty().setValue(true);
// or btn.setWrapText(true);
btn.setText("Some looooooooooooong text");
或者,如果您想确定线的确切位置,您可以这样:
Button btn = new Button();
btn.setText("Line1\n Line2\n Line3");
最后一种方法可以在不改变工具栏高度的情况下工作。
答案 1 :(得分:2)
我解决了这个问题,包括我的按钮中的VBox,然后在VBox中包含几个标签。像这样:
结果是:
如果有更优雅的方式来获得相同的结果,请告诉我。 谢谢。
答案 2 :(得分:2)
答案 3 :(得分:0)
我的解决方案与OP给出的解决方案几乎相同,但Label
使用Text
代替@Override
public void start(Stage primaryStage) {
Button btn = new Button();
ImageView imageView = new ImageView(new Image(getClass().getResource(<image>).toExternalForm()));
Text text=new Text("Some long text that may be line wrapped");
text.setWrappingWidth(100);
VBox vBox = new VBox(5, imageView,text);
vBox.setAlignment(Pos.CENTER);
btn.setGraphic(vBox);
btn.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
Scene scene = new Scene(new StackPane(btn), 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
,因此更改按钮大小更加灵活,因为它将用作根据需要多行。如果需要,还可以设置包装宽度,以定义宽度约束。
{{1}}
答案 4 :(得分:0)
Label label= new Label("your long text here");
label.setStyle("-fx-max-width : 180px);
label.setWrapText(true);
答案 5 :(得分:0)
从sobolev的回复中,你可以做到:
Button btn = new Button();
btn.setText("Line1\n Line2\n Line3");
button.textAlignmentProperty().set(TextAlignment.CENTER);
这将创建3行文本,并将它们分配到按钮的中心。