我们正在尝试计算 TextArea 中的行数
以下是 TextArea 属性 PrefWidth 600 和 PrefHeight 620,MaxHeight 620
Wrap Text 设置为 true。我们正在使用带有 Scene Builder 的 JavaFX 8
我们有一个 textPropertyListiner,它会在 TextArea.getLength 大于某个值时触发警报
此方法的问题是它不考虑用户输入回车 \n
所以我们实现了这段代码来捕获\n
String toCount = txaDiaryEntry.getText();
String [] lineArray = toCount.split("\n");
int LA = lineArray.length - 1;
if(LA == 0){
rc = rc - 1;
System.out.println("###### LA "+LA+" RC "+rc);
}
if 测试始终为零,因此每次用户在输入回车后键入任何内容时都会运行
此代码在 textPropertyListiner 内
当输入的文本执行换行时,没有创建 \n
我们查看了许多旧帖子并尝试了没有结果
的几个例子问题是如何计算 TextArea 中具有回车符和换行符的行数是否为真?
在我进行测试时,我注意到发布代码的一些问题是 LA 值继续增加。因为我们很少使用 Array 我的猜测是当值达到 1 时需要清除 Array
所以如果有人愿意解释如何使用这个 String[] 数组来完成它,我们将给它一个测试
我们已经编辑了问题代码,以反映计算两个换行和当用户按下 ENTER 键时的工作示例。虽然这可行,但我们可能会补充一点,使用行计数来防止进一步的文本输入不如计算 TextArea 中的字符数有利。
@Override
public void initialize(URL url, ResourceBundle rb) {
txtTitle.setStyle("-fx-text-fill: black;");
getDate();
if(doEDIT.equals("TRUE")){
btnEdit.setVisible(true);
btnSave.setVisible(false);
try {
ReadChildTable();
} catch (SQLException ex) {
Logger.getLogger(EnterController.class.getName()).log(Level.SEVERE, null, ex);
}
}
try {
ReadParent();
} catch (SQLException | IOException ex) {
Logger.getLogger(EnterController.class.getName()).log(Level.SEVERE, null, ex);
}
txaDiaryEntry.textProperty().addListener((observable, oldValue, newValue) -> {
EC = txaDiaryEntry.getLength();
tEC = tEC + 1;
// this counts line wraps every 62 char
if(tEC == 62){
RC = RC - 1;
tEC = 0;
}
// This counts ENTER key presses
String toCount = txaDiaryEntry.getText();
String [] lineArray = toCount.split("\n");
LA = lineArray.length - 1;
if(LA == tLA){
tLA = LA + 1;
RC = RC - 1;
}else if(tLA < LA){
tLA = LA + 1;
RC = RC - (LA - 1);
}else{
}
// This test counter
int minus = EC+(LA * 40);
int val = 1200 - minus ;
txtCR.setText(String.valueOf(val));
uEC = uEC - val;
if(LA == 0){
uEC = 1200;
}else{
uEC = 960;// 880
}
if(EC > uEC){
//if(RC == 0){
alertTYPE = "4";
//RC = RC + 1;
try {
customAlert();
} catch (IOException ex) {
Logger.getLogger(EnterController.class.getName()).log(Level.SEVERE, null, ex);
}
txaDiaryEntry.requestFocus();
}
});
}
请参阅代码中的注释,因为此方法管理其他任务。