不知道有这样的方法给你说一下我的思路:
把返回的字符串进行处理,对回车\n进行判断来截取字符串然后看你想要哪个再取出来就行了
public static String getRowText(int row,String text){
String string="";
String regex = "\n";
Pattern p =Patterncompile(regex);
String[] r = psplit(text);
if(!((r[row-1]trim())equals(""))){
string = r[row-1];
}
return string;
}
这是我刚按照你的要求写的方法,调用的时候要把行数,JTEXTAREA中的字符串
首先引入类包 import javautilregexPattern;
Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
在代码中执行完textAreaappend("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textAreainvalidate()和textArearepaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现这个效果,就是执行以下语句
textAreapaintImmediately(textAreagetBounds());
或
textAreapaintImmediately(textAreagetX(), textAreagetY(), textAreagetWidth(), textAreagetHeight());
这时,你会发现你刚才增加的消息已经被实时地显示出来了。
应该是在Frame窗口的线程上,因为我点击按钮后,去进行数据处理,数据处理需要很长时间,此时按钮一直呈现的是被点击的样式,Frame线程被阻塞了,所以textAreaappend("message");运行后,文本框里没有实时的呈现出来!
而且现在还有另一种方法,就是在处理数据时,另起一个线程,此时不管处理数据需要多长时间,textAreaappend("message");运行后,文本框里会实时呈现出来!
你确信textAreaappend("message")是运行在swing事件处理线程上?
SwingUtilitiesinvokeLater(new Runnable() {
@Override
public void run() {
textAreaappend("message");
}
});
Textfield有一个方法叫getText(),用于获取文本的值,但取到的是字符串,当用户输入值后再点击提交按钮,getText()方法就能获取到用户输入的值。
importjavaxswing;
importjavaawt;
importjavaawtevent;
publicclassGetTextextendsJFrame
{
privateJButtonbt=newJButton("click");
privateJTextField
// t1=newJTextField(10),
t2=newJTextField(10);
privateJTextAreat1=newJTextArea(10,20);
publicGetText()
{
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
setSize(200,100);
setVisible(true);
setLayout(newFlowLayout());
// add(bt);
// add(t1);
add(newJScrollPane(t1));
add(bt);
add(t2);
btaddActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
t2setText(t1getText());
}
});
}
publicstaticvoidmain(String[]args)
{
newGetText();
}
}
JTextArea text =
textsetText("要写入的文字");
String str = textgetText();//得到里面的文字
int i = strlength();//个数
可以用多线程。写个类,实现Runnable,run方法中是读取文件代码。留个口,设置路径参数。
Class ReadFile implements Runnale {
private path;
public ReadFile(String path){
thispath = path
}
public void run(){//读取文件代码}
}
外部可以同时调用6个,或者写循环
new Thread(New ReadFile(path))start()
呵呵,如果使用jTextarea2 的append方法肯定只能增加内容到最后,
我一般是这么做的,新建一个类继承JTextarea ,然后新增一个 preApend() 方法,或者重写 append() 方法。
明白我的意思了吗?
== 我开eclipse,等下把代码贴上来
JTextArea 的append()方法 源码如下:
public void append(String str) {Document doc = getDocument();
if (doc != null) {
try {
第一个参数,docgetLength() 表示从最后位置插入
docinsertString(docgetLength(), str, null);
} catch (BadLocationException e) {
}
}
}
看看我新建的类:
public class PreTextArea extends JTextArea {public void append(String str){
Document doc = getDocument();
if (doc != null) {
try {
第一个参数,0 表示从第一个位置插入,
docinsertString(0, str, null);
} catch (BadLocationException e) {
}
}
}
}
以上就是关于java里的JTextArea对象怎样返回指定行的字符串全部的内容,包括:java里的JTextArea对象怎样返回指定行的字符串、java中文件选择器组件读取一个txt文件到JTextArea中,我想让它一行一行的慢慢显示出来,怎么做呢、Java swing里怎么获得TextField手动输入的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)