Saya sedang mengerjakan proyek JavaFX dan telah mendefinisikan textArea di dalam scrollPane di mana teks harus dimasukkan dari file teks pilihan pengguna.
Saya telah menambahkan penghitung yang menghitung baris yang dimasukkan ke dalam textArea: textArea.getText().lines().count()
sehingga saya dapat mengatur tinggi textArea (dengan mengatur nilai yang diperoleh dari penghitung, dalam parameter PrefRowCount di textArea).
Masalahnya adalah pembilang dengan cara ini menghitung paragraf di textArea (sesuai dengan cara penulisan dalam file teks) dan yang saya perlukan adalah mendapatkan jumlah baris dalam setiap paragraf seperti yang ditunjukkan di textArea saya (sesuai dengan pengaturan font, ukuran font, dll).
Dan di sini saya bertanya: Cara manakah saya dapat menghitung baris-baris dalam setiap paragraf di textArea sehingga saya dapat menyesuaikannya dengan ketinggian yang tepat yang seharusnya dimiliki textArea?
Pengontrol JavaFX saya terlihat seperti ini:
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);
}
}