每次文本被包装时我都需要能够计算一行。我正在使用javaFX“TextArea”控件。
我已经实现了一个计数器,每次遇到“\ n”字符时它都会递增。不幸的是,这忽略了由于文本换行而创建的其他行。
IS 是一种使用jtextarea swing控件来避免这种情况的方法,它类似于javafx的文本区域,但我真的不想使用它,因为FX版本具有其他功能哪个更适合我的任务。
如果有人对如何增加此计数器有任何建议,请告诉我!或者,另一种计算线的方法也同样有效。
(我正在使用场景构建器2.0和Netbeans 8.1 / 8.0.2(两者))
我必须手动输入换行符,如下所示:
String pText = Primary.getText();
Primary.clear();
StringReader reader = new StringReader(pText);
BufferedReader br = new BufferedReader(reader);
//FileReader reader = new FileReader(fileLocation);
//BufferedReader br = new BufferedReader(reader);
String s;
int index = 0;
//int charCounter = 0;
boolean endOfPara = false;
// int index = 0;
// boolean endOfPara = false;
try{
//loads the text and formats it if necessary
while((s = br.readLine()) != null)
{
index = 0;
//loading block
if(s.length() <= characterCapacity)
{
//String s = "abcdefg";
int result = s.indexOf('\n');
if(result == -1)
{
Primary.appendText(s + "\n");
}
else
{
Primary.appendText(s);
}
}
//formatting block
else
{
while(index < s.length()) //change this
{
if((index == characterCapacity) && (index < s.length() - 1))
{
while(s.charAt(index) != ' ')
{
index--;
}
String n = s.substring(0, index);
s = s.substring(index);
//if(n.charAt(n.length() - 1) == '\n')
//{
// Primary.appendText(n);
//}
//else
//{
Primary.appendText(n + "\n");
//}
index = 0;
}
else if((index == s.length() - 1) && (index <= characterCapacity) && (s.length() > 0))
{
Primary.appendText(s + "\n");
index = s.length(); //OR use break;
endOfPara = true;
Primary.forward();
Primary.deletePreviousChar();
}
else
{
index++;
}
/*if(charCounter > 90)
{
if((charCounter >= 90) && (s.charAt(index) != )
{
}
if(index == (s.length() - 1))
{
}
else
{
charCounter++;
}
}*/
}
/*if(endOfPara == true)
{
if(s.charAt(index - 2) != '\n')
{
Primary.appendText("\n");
}
}
endOfPara = false;*/
}
}
}
catch(Exception e)
{}
我有一个以前的版本更好地工作,但不幸的是,它会在单词的中间插入换行符,在某些情况下。
所以是的,简而言之,这就是为什么我想使用第三方库来“获取行号”/“获取总行数”,或者找到一些方法来使用textarea皮肤。
请帮忙!我真的被困在这......