ฉันกำลังทำงานในโปรเจ็กต์ JavaFX และได้กำหนด textArea ภายใน scrollPane ซึ่งควรป้อนข้อความจากไฟล์ข้อความที่ผู้ใช้เลือก
ฉันได้เพิ่มตัวนับที่นับบรรทัดที่แทรกลงใน textArea: textArea.getText().lines().count()
เพื่อให้ฉันสามารถตั้งค่าความสูงของ textArea (โดยการตั้งค่าที่ได้รับจากตัวนับในพารามิเตอร์ PrefRowCount ใน textArea)
ปัญหาคือตัวเศษด้วยวิธีนี้จะนับ ย่อหน้า ใน textArea (ตามวิธีที่เขียนในไฟล์ข้อความ) และสิ่งที่ฉันต้องการคือให้ได้จำนวน บรรทัดภายในแต่ละย่อหน้า ดังแสดงใน textArea ของฉัน (ตามการตั้งค่าฟอนต์ ขนาดฟอนต์ ฯลฯ)
และที่นี่ฉันถาม: ฉันจะระบุบรรทัดภายในแต่ละย่อหน้าใน textArea ด้วยวิธีใดเพื่อที่ฉันจะได้ปรับความสูงที่ถูกต้องที่ textArea ควรมี
ตัวควบคุม JavaFX ของฉันมีลักษณะดังนี้:
public class Controller {
ObservableList<String> days = FXCollections.observableArrayList
("1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30"),
months = FXCollections.observableArrayList
("Tishrei", "Cheshvan", "Kislev", "Tevet", "Shevat", "Adar",
"Nisan", "Iyar", "Sivan", "Tammuz", "Av", "Elul");
public ComboBox day, month;
public TextField year;
public Button ok;
public ScrollPane scrollPane;
public TextArea textArea;
@FXML
private void initialize(){
day.setItems(days);
month.setItems(months);
}
public void okClick() throws IOException {
String dayValue = (String) day.getValue();
String monthValue = (String) month.getValue();
String dayFile = ("/textFiles/days/"+dayValue+".txt");
String monthFile = ("/textFiles/months/"+monthValue+".txt");
InputStream inDayFile = getClass().getResourceAsStream(dayFile);
InputStream inMonthFile = getClass().getResourceAsStream(monthFile);
BufferedReader readerDayFile = new BufferedReader(new InputStreamReader(inDayFile, "UTF-8"));
BufferedReader readerMonthFile = new BufferedReader(new InputStreamReader(inMonthFile, "UTF-8"));
String dayTitle = ("Day " + dayValue + ":\n");
String monthTitle = ("Month " + monthValue + ":\n");
String scanDayFile = new Scanner(readerDayFile).useDelimiter("\\Z").next();
String scanMonthFile = new Scanner(readerMonthFile).useDelimiter("\\Z").next();
textArea.setText(dayTitle + scanDayFile + "\n\n" + monthTitle + scanMonthFile);
long lineCount = textArea.getText().lines().count();
textArea.setPrefRowCount(Integer.parseInt(String.valueOf(lineCount)));
scrollPane.setVvalue(0);
}
}