控制用于显示多行文本?(Control for displaying multiline text?

2019-08-22 10:06发布

我需要显示多,只读文本 - 它控制可用于吗? 它应该只dislay文字,就像一个标签确实,但是标签不支持多?

感谢您的任何提示:-)

Answer 1:

您可以显示多行只读文本Label

如果文本有\n (新行)内的字符,则标签会换到一个新行的地方使用换行符。

如果标签上有wrapText设置为true,没有足够的空间来显示文本的单行线,则标签会自动换行到新行。


如果你想在不同风格的文字,然后,如果在使用JavaFX 2,地方多个标签FlowPane或者,如果你正在使用Java 8+,将标签贴在TextFlow的组成部分。


通过下面的代码生成:

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");
}

尝试运行上面的程序和调整窗口看到的效果\n新行值标签的文本还有wrapText标签上的属性。 改变wrapText从真正的设置为false,看其之间的差异wrapText开启和关闭。



Answer 2:

如果文本有\ n(新行)内的字符,则标签将放置换到一个新行的地方使用换行符。

它当您设置FXML文件以及从视觉FXML编辑文本不工作。



Answer 3:

如果你设置你想为你的一个最大宽度Label ,然后设置setWrapTexttrue ,使其显示文本多:

Label label = new Label("Your long text here");
label.setMaxWidth(180);
label.setWrapText(true);


Answer 4:

您还可以使用Text出现在多,通过设置wrappingWidthProperty根据您的需要。

Text text = new Text();
text.wrappingWidthProperty().set(345);

在这段代码中,我最大宽度设置为345.0 ,那么当文本的大小达到超过345像素将被换到下一行。



Answer 5:

文本类也可以。 在这个答案一个很好的解释标签和文本的差异功能于JavaFX的基本使用,你就别想输入文本,否则标签是更好的。



文章来源: Control for displaying multiline text?