Bagaimana cara menghitung baris paragraf di textArea di java? [duplikat]

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

    }

}

person chaim770    schedule 17.03.2020    source sumber
comment
tidak didukung - samar-samar ingat ada pertanyaan sebelumnya di sini di SO dengan solusinya.   -  person kleopatra    schedule 17.03.2020
comment
Sulit bagi saya untuk memahami secara pasti apa yang berguna dari setiap postingan bagi saya . Bisakah Anda menjelaskan bagaimana tepatnya saya bisa memasukkan ini ke dalam kode saya? Saya akan sangat berterima kasih.   -  person chaim770    schedule 17.03.2020


Jawaban (1)


garis di area teks berbeda dari konsep garis yang mungkin Anda pikirkan. Di java, baris adalah teks yang dipisahkan dengan baris baru atau \n.

ketika sebuah teks tidak dapat dimasukkan ke dalam lebar area teks, karakter yang tersisa dari string teks, akan dipindahkan ke baris berikutnya di area teks, namun itu tidak berarti bahwa itu sebenarnya adalah baris baru. sebuah baris akan selesai ketika tombol Enter ditekan atau \n ditemukan dalam sebuah string.

Jika Anda perlu menyesuaikan area teks dan membaca konten dari file teks, Anda mungkin perlu menghitung jumlah karakter dalam file teks, temukan jumlah karakter yang dapat disesuaikan dengan lebar area teks Anda, dan bagilah jumlah karakter untuk menentukan ketinggian yang dibutuhkan untuk area teks Anda.

Namun karena area teks dapat digulir, saya tidak berhenti memahami alasan di balik semua masalah yang Anda alami ini.

person iman rameshni    schedule 17.03.2020