2016-06-29 51 views
0

我想在我的應用程序中創建一個記事本屏幕。一旦創建了筆記,它們就被鎖定並且無法編輯,但是新的頁面可以添加到筆記中。如何推斷TextFlow中的分頁符?

我認爲使用TextFlow將是一個很好的控制。我想這樣做的是以下幾點:

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

這爲我提供了相當多我想要的東西,除了分隔符是隻是一個很小的一行:

**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 

我也這樣嘗試過。我希望該行可以跨越整個TextFlow,但我不確定如何去做。

謝謝。

回答

2

已經有內置的控制您需要一個JavaFX:一個Separatorjavadoc) 。

@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(); 
} 

Separator

+0

感謝。我沒有意識到我可以確定它的大小。會給它一個鏡頭。 –

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