0

アプリケーションでメモ帳画面を作成しようとしています。メモが作成されると、それらはロックされて編集できなくなりますが、新しいページをメモに追加することはできます。

TextFlow を使用すると、これをうまくコントロールできると思いました。私がやりたいことは次のとおりです。

**Note Taker Name**
**Date of Note**
Line of Note Text
Line of Note Text
Line of Note Text
Line of Note Text
------------------------------------------
**Note Taker Name**
**Date of Note**
Line of Note Text
Line of Note Text
Line of Note Text
Line of Note Text

私はこの方法でそれを試みました:

String s1 = "line of text";

textFlow.getChildren().add(new Text(s1));
textFlow.getChildren().add(new Text(System.lineSeparator()));
textFlow.getChildren().add(new Separator(Orientation.HORIZONTAL));
textFlow.getChildren().add(new Text(System.lineSeparator()));
textFlow.getChildren().add(new Text(s1));

scrollPane.setFitToWidth(true);

これは、セパレーターがほんの小さな線であることを除いて、私が望むものをほとんど提供します。線が TextFlow 全体を横切るようにしたいのですが、その方法がよくわかりませんでした。

ありがとう。

4

2 に答える 2

3

必要に応じて JavaFX 組み込みコントロールが既に存在します: a Separator( javadoc )。

@Override
public void start(Stage primaryStage) {
    TextFlow textFlow = new TextFlow();
    Text nameText = new Text("Taken By me ");
    nameText.setFill(Color.CRIMSON);
    textFlow.getChildren().add(nameText);
    textFlow.getChildren().add(new Text(System.lineSeparator()));

    Text takenOn = new Text("Taken On: " + DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).format(LocalDateTime.now()));
    takenOn.setFill(Color.CRIMSON);
    textFlow.getChildren().add(takenOn);
    textFlow.getChildren().add(new Text(System.lineSeparator()));

    textFlow.getChildren().add(new Text("this is a note"));
    textFlow.getChildren().add(new Text(System.lineSeparator()));

    // Separator
    final Separator separator = new Separator(Orientation.HORIZONTAL);
    separator.prefWidthProperty().bind(textFlow.widthProperty());
    separator.setStyle("-fx-background-color: red;");
    textFlow.getChildren().add(separator);

    textFlow.getChildren().add(new Text(System.lineSeparator()));
    textFlow.getChildren().add(new Text("this is another note"));

    Scene scene = new Scene(textFlow, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

セパレーター

于 2016-06-29T17:16:33.250 に答える
0

うまくいく答えを見つけました-これがそれを処理する最良の方法であるかどうかはわかりません:

private void loadTextFlowWithNotes() {
    textFlow.getChildren().clear();
     notes.forEach(note -> {
        Text nameText = new Text("Taken By: " + note.takenBy);
        nameText.setFill(Color.CRIMSON);
        textFlow.getChildren().add(nameText);
        textFlow.getChildren().add(new Text(System.lineSeparator()));

        Text takenOn = new Text("Taken On: " + note.takenOn.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)));
        takenOn.setFill(Color.CRIMSON);
        textFlow.getChildren().add(takenOn);
        textFlow.getChildren().add(new Text(System.lineSeparator()));
        textFlow.getChildren().add(new Text(System.lineSeparator()));

        textFlow.getChildren().add(new Text(note.noteText));
        textFlow.getChildren().add(new Text(System.lineSeparator()));
        textFlow.getChildren().add(new Text(System.lineSeparator()));

        Line line = new Line();
        line.setStartX(0);
        line.endXProperty().bind(textFlow.widthProperty());
        line.setFill(Color.CRIMSON);
        textFlow.getChildren().add(line);
        textFlow.getChildren().add(new Text(System.lineSeparator()));
        textFlow.getChildren().add(new Text(System.lineSeparator()));
    });
}
于 2016-06-29T14:12:17.287 に答える