![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
关于java 界面的JTextArea问题。
我用java编了一个界面,里面有一个JTextArea,我本想让随着程序的运行,一条条的将信息追加到JTextArea中(我用的是append方法)显示出来,但真实的效果...
我用java编了一个界面,里面有一个JTextArea,我本想让随着程序的运行,一条条的将信息追加到JTextArea中(我用的是append方法)显示出来,但真实的效果是,程序全运行完之后,内容才会在JTextArea中显示出来。而且在程序运行的过程中,点下去的那个JButton也一直是被按下的状态,就好像一切都静止在那了,直到程序全运行完,那个按钮才弹起来。
希望高手进来,帮我解决一下这个问题。 展开
希望高手进来,帮我解决一下这个问题。 展开
展开全部
解决代码问题就需要贴代码,你不贴代码谁知道你是怎么写的?
不过,看你的情况我也能猜到你的代码是怎么个结构——你添加信息的方法应该是通过一个for循环或者while循环填进JTextArea中去的,对不对?因为在这种情况下,循环结构体的代码不执行完毕,你的JButton才会一直保持在被按下的状态,只有等循环体中的代码完全执行完毕才会弹起。
解决方法:
要想实现你要的效果,需要用到线程,实现Runnable接口就可以,在run方法中,代码如下:
public void run()
{
while(nowPoint < textinfo.length)
{
textArea.append(textinfo[nowPoint]);
Thread.sleep(100);
}
}
方法中的textinfo是你想要添加的信息的数组,在方法外定义;nowPoint是当前添加条目的索引,在方法外定义。
在JButton的事件方法中,只需要启动线程就行了。
new Thread(this).start();//注意,这里并没有检测当前是不是有线程在运行,所以你连续多次点击这个button的话,会发现条目添加的速度=实际速度*你点击button的次数.
除了线程,还以使用Timer来实现,跟Thread的道理是一样的,但是启动一个定时的任务。这样的话,你就能看见你的JTextArea每隔一会儿就添加一条信息了。
不过,看你的情况我也能猜到你的代码是怎么个结构——你添加信息的方法应该是通过一个for循环或者while循环填进JTextArea中去的,对不对?因为在这种情况下,循环结构体的代码不执行完毕,你的JButton才会一直保持在被按下的状态,只有等循环体中的代码完全执行完毕才会弹起。
解决方法:
要想实现你要的效果,需要用到线程,实现Runnable接口就可以,在run方法中,代码如下:
public void run()
{
while(nowPoint < textinfo.length)
{
textArea.append(textinfo[nowPoint]);
Thread.sleep(100);
}
}
方法中的textinfo是你想要添加的信息的数组,在方法外定义;nowPoint是当前添加条目的索引,在方法外定义。
在JButton的事件方法中,只需要启动线程就行了。
new Thread(this).start();//注意,这里并没有检测当前是不是有线程在运行,所以你连续多次点击这个button的话,会发现条目添加的速度=实际速度*你点击button的次数.
除了线程,还以使用Timer来实现,跟Thread的道理是一样的,但是启动一个定时的任务。这样的话,你就能看见你的JTextArea每隔一会儿就添加一条信息了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询