晚上好,大家好! 有一个名为TextArea的对象,我用它来显示文本,大书的大文本,使其不可编辑。如果它无法同时显示所有文本,则会获得滚动并仅显示其自身的一部分。
这就是重点,我们能否设定哪一部分文本应该显示? 只是一个kleiner暗示,我不会问更多)
P.S。另外,Fisrt,我问自己一个问题,用什么来显示所需的文字,并没有找到比TextArea更好的东西,可能是因为寻求不好。也许,你们中的某些人,亲爱的程序员,遇到了同样的问题并找到了更好的解决方案?
答案 0 :(得分:0)
您不必显示所有内容,您可以显示行数(来自大字符串),并通过事件(如鼠标滚轮)将字符串的下一行按到TextArea
简单示例:
public class Controller {
public TextArea text;
int current=0;
int d=1;
int rowSize= 20;
int rowsToSee=10;
String[] strings=null;
@FXML
public void initialize() {
String string ="";
for(int i=0;i<3000;i++){
string=string+" "+i;
if(i%rowSize==0){
string=string+"\n";
}
}
strings = string.split("\n");
final String s=string;
text.setText(returnLines(current,current+rowsToSee,strings));
text.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
if(event.getDeltaY()<0){
text.setText(returnLines(current,current+rowsToSee,strings));
current=current+d;
}else {
if(current!=0)
{ current=current-d;
text.setText(returnLines(current,current+rowsToSee,strings));
}
}}
});
}
String returnLines(int from,int to,String[] strArry){
String s="";
for(int i=from;i<to;i++){
if(strArry.length>i){
s=s+strArry[i]+"\n";
}
}
return s;
}
}