Sie können in einer Label mehrzeiligen Nur-Lese-Text angezeigt werden soll.
Wenn der Text \n
(Newline) -Zeichen enthält, wird die Beschriftung in eine neue Zeile umgebrochen, unabhängig davon, wo das Newline-Zeichen steht.
Wenn das Label auf true gesetzt hat und nicht genügend Platz zum Anzeigen einer einzelnen Textzeile vorhanden ist, wird das Etikett in eine neue Zeile eingefügt.
Wenn Sie Text in verschiedenen Stilen wollen, dann, wenn mit JavaFX 2, legen mehrere Etiketten in einem FlowPane
oder, wenn Sie Java 8+ verwenden, legen Sie die Etiketten in einer TextFlow
Komponente.
durch den folgenden Code Produziert:
import javafx.scene.Scene;
import javafx.application.Application;
import javafx.scene.control.Label;
import javafx.scene.image.*;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class LoveMeNot extends Application {
public static void main(String[] args) throws Exception { launch(args); }
@Override public void start(final Stage stage) throws Exception {
Label label = new Label(WORDS);
label.setWrapText(true);
label.setStyle("-fx-font-family: \"Comic Sans MS\"; -fx-font-size: 20; -fx-text-fill: darkred;");
ImageView image = new ImageView(IMAGE);
image.setOpacity(0.3);
StackPane layout = new StackPane();
layout.setStyle("-fx-background-color: mistyrose; -fx-padding: 10;");
layout.getChildren().setAll(image, label);
stage.setTitle("Love Me Not");
stage.setScene(new Scene(layout));
stage.show();
}
// creates a triangle.
private static final String WORDS =
"Love not me for comely grace,\n" +
"For my pleasing eye or face,\n" +
"Nor for any outward part,\n" +
"No, nor for my constant heart,\n" +
"For these may fail, or turn to ill.\n" +
"So thou and I must sever.\n" +
"Keep therefore a true woman’s eye,\n" +
"And love me still, but know not why,\n" +
"So hast thou the same reason still\n" +
"To doat upon me ever.";
private static final Image IMAGE =
new Image("http://icons.iconarchive.com/icons/artdesigner/gentle-romantic/256/rose-icon.png");
}
Versuchen Sie das Programm ausführen und Ändern der Größe des Fensters, die Wirkung der \n
neuen Linienwerte in der Beschriftung des Textes zu sehen, wie gut als wrapText -Eigenschaft auf dem Etikett. Variieren Sie die wrapText-Einstellung von "true" auf "false", um den Unterschied zwischen dem Ein- und Ausschalten von wrapText zu erkennen.
Haben Sie sich das Steuerelement [TextArea] (http://docs.oracle.com/javafx/2/api/javafx/scene/control/TextArea.html) angesehen? Sie können es nicht editierbar machen und es so gestalten, dass es wie ein Etikett aussieht. – OttPrime
Danke OttPrime, ja, das ist die Idee, der ich momentan folge. Dennoch frage ich mich, ob es keine wirkliche Kontrolle für die Anzeige von Text gibt? So etwas wie eine RichTextBox in .NET? –
Der [HTMLEditor] (http://docs.oracle.com/javafx/2/ui_controls/editor.htm) ist am ehesten eine RichTextBox, aber es ist wahrscheinlich ein bisschen mehr Funktionalität als Sie wollen. – OttPrime