JAVA 两个类控制JTextArea输出

来源:百度知道 编辑:UC知道 时间:2024/05/12 01:08:37
有两个类 A和B

A负责GUI的设计,其中有个JTextArea;定义为protected
B负责计算m 而m是一个一直变化的数值,JTextArea要实时输出

怎么办到?(计算m的过程是个While循环)

那B类必然要做一个线程了。至于设计成什么样的,你应该根据你的需要去做。
JTextArea的getText()和setText(String)都相对耗时的,如果一次调用没什么问题,可在线程中重复调用不是好风格。可以考虑在线程B中,设置一个输出项数据,需要更改JTextArea的内容时,先由类内部数据生成结果串,再调用一次setText,尽量别调用getText。
另,JTextArea是protected的,那A和B还必须在同包。

import java.awt.*;
import javax.swing.*;
public class A{
protected JTextArea text=new JTextArea();
//其它.....
public change(int m){
text.setText(String.valueOf(m));
}
}
class B{
public static void main(String args[]){
A a=new A();
while(true){
//对m的处理....
A.change(a);
}
}
}

b相当于model,a就是View,只要b在改变数值的时候发个消息就可以了。当然a改变数值也可以通知b,但是别发消息发死循环了。千万不要用多线程,gui用多线程很麻烦。容易出问题。

把输出到JTextArea 的语句放到一个线程里面,然后启动线程就会实时输出了。

开一个线程,每格N秒让area getText 一次