java TextArea 求教
程序A中有一个主JFrame里面有一个TextArea,程序在执行过程中调用B类进行处理,但在B类执行过程中需要更新TextArea内容,请问该如何实现。谢谢!在JFra...
程序A中有一个主JFrame里面有一个TextArea,程序在执行过程中调用B类进行处理,但在B类执行过程中需要更新TextArea内容,请问该如何实现。谢谢!在JFrame类中设置了public void setappend方法, 在B类中 new A().setappend(str)执行后,没有成功更新内容,请教该如何在其他类中更新此A类中的TextArea内容,谢谢!
展开
展开全部
知道回调模式不?
首先定义一个接口,
public interface Callbackable {
public void onCallback(String info);
},
写你的主JFrame
public class MyFrame extends JFrame implements Callbackable {
private JTextArea textArea;
...
@Override
public void onCallback(String info) {
this.textArea.setText(info);
//其他代码。。。
}
定义你的类B,
class B {
private Callbackable handle;
public B(Callbackable handle) {
this.handle=handle;
}
//你的处理代码的方法
public void process() {
//你的处理代码...
//处理完成通过handle回调
this.handle.onCallback(info);
}
}
然后在MyFrame中实例化类B
new B(this),来把自身传给类B,这样在B中就有了一个handle(以前学C++的时候这个东西叫句柄,现在也这么叫吧),通过这个handle来回调MyFrame.
你可以把B类中的handle定义成一个Callbackable容器,然后通过一个addAfterProcessHandler(Callable c)来实现更复杂的控制。这也是一般的GUI事件处理机制(回调模式),如android和java Swing,没事的时候建议你多看些基础的东西。
首先定义一个接口,
public interface Callbackable {
public void onCallback(String info);
},
写你的主JFrame
public class MyFrame extends JFrame implements Callbackable {
private JTextArea textArea;
...
@Override
public void onCallback(String info) {
this.textArea.setText(info);
//其他代码。。。
}
定义你的类B,
class B {
private Callbackable handle;
public B(Callbackable handle) {
this.handle=handle;
}
//你的处理代码的方法
public void process() {
//你的处理代码...
//处理完成通过handle回调
this.handle.onCallback(info);
}
}
然后在MyFrame中实例化类B
new B(this),来把自身传给类B,这样在B中就有了一个handle(以前学C++的时候这个东西叫句柄,现在也这么叫吧),通过这个handle来回调MyFrame.
你可以把B类中的handle定义成一个Callbackable容器,然后通过一个addAfterProcessHandler(Callable c)来实现更复杂的控制。这也是一般的GUI事件处理机制(回调模式),如android和java Swing,没事的时候建议你多看些基础的东西。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在类B的构造函数中的参数添加个类A类型的变量,同时类B设个类A的成员变量,在类A中调用类B时把类A自身this传过去,赋给类B中的变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |