2014-12-04 3 views
1

Мне нужно создать панель инструментов на моем экране, которая будет иметь несколько кнопок, и каждая кнопка должна иметь несколько строк текста. Например:Кнопка JavaFX с несколькими текстовыми строками

Button with multiple lines

Я посмотрел через Интернет и StackOverflow, но я не мог найти ничего, чтобы показать, как это сделать в JavaFX. Я использую JavaFX 8.

Кто-то может мне помочь, пожалуйста?

Tks

ответ

1

Я решил эту проблему, в том числе VBox внутри моей кнопки, а затем в том числе несколько меток внутри VBox. Как это:

enter image description here

Результат:

enter image description here

Если есть более элегантный способ иметь тот же результат, пожалуйста, дайте мне знать. Спасибо.

0

Мое решение почти такое же, как у ОП, но вместо 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(); 
} 
5

Также вы можете использовать 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"); 

Последний вариант работает без изменения высоты панели инструментов.

0
Label label= new Label("your long text here"); 
label.setStyle("-fx-max-width : 180px); 
label.setWrapText(true); 
1

В текстовом собственности Кнопка выбора "перейти в режим многострочного

enter image description here"

+1

приятно предложение :) TNX –

Смежные вопросы