java里的JTextArea对象怎样返回指定行的字符串

java里的JTextArea对象怎样返回指定行的字符串,第1张

不知道有这样的方法给你说一下我的思路:

把返回的字符串进行处理,对回车\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手动输入的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9279718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存