【发布时间】:2020-06-28 14:18:57
【问题描述】:
我正在开发一个 JavaFX 项目,并在 scrollPane 中定义了 textArea,在其中应该从用户选择的文本文件中输入文本。
我添加了一个计数器,用于计算插入到 textArea 中的行数:
textArea.getText().lines().count()
这样我就可以设置 textArea 的高度(通过设置从计数器获得的值,在 textArea 的 PrefRowCount 参数中)。
问题是分子以这种方式计算textArea中的paragraphs(根据文本文件中的编写方式),我需要的是获取每个段落中的行数 如我的 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);
}
}
【问题讨论】:
-
不支持 - 隐约记得这里有一个关于 SO 的较早问题,有一个解决方法。
-
我很难确切地理解每个 post 对我有用的地方。您能否具体说明我如何将其合并到我的代码中?我会很感激的。
标签: java javafx count textarea