MDI子窗口间的数据共享

声明:本文章中介绍的内容可以在GPF项目中找到相应的实现。
 
MDI的子窗口间的数据共享是在设计MDI程序是应当注意的问题。作为MDI程序的GPF,在设计时也需要考虑这一点。
 
GPF中,对于一些绘图工具的设置,可以设置成全局性的。也就是说,当窗口1点击“绘制直线”按钮时,窗口2当前的操作同样更改为“绘制直线”。这时,就有两种方法实现,一个是“送出去”,一个是“取过来”。
 
所谓“送出去”,是指的由主程序将更改的数据送发给各个子窗口。比如如下的代码:
 
//... 
currentColor = newColor; 
//... 
JInternalFrame[] frames = jDesktopPane.getAllFrames(); 
for(JInternalFrame iframe : frames){ 
    iframe.setColor(currentColor); 

//...
 
这段代码很清楚,当属性currentColor改变时,首先获取当前JDesktopPane中所有的JInternalFrame,然后利用循环依次设置。这个可以称作“送出去”,是有主程序发送给内部子窗口各个数据的。
 
另外一个是“取过来”,意思是由子窗口去获取最新数据。当子窗口被选择时,它才需要获取最新数据,从而执行相应的操作。因此,根据这一思路,我们将子窗口的isSelected方法进行重写:
 
//... 
currentColor = newColor; 
//... 
// in child class of JInternalFrame 
class InnerFrame  extends JInternalFrame { 
     //... 
    Color innerColor; 
    @Override 
     public  boolean isSelected(){ 
         if(isSelected) { 
            innerColor = currentColor; 
        } 
         return isSelected; 
    } 
     //... 
}
 
这里,我们重写了JInternalFrame的isSelected方法,根据继承来的isSelected属性进行设置,当isSelected为true时,更新自身的属性,这就实现了主动“取过来”获得数据的方法。
 
当然,这并不一定是最好的方法,但是个人觉得还是简单可行的。在早版本的GPF中使用的是第一种“送出去”的方法,结果存在大量的循环代码,而在新版本中,则使用了“取过来”方法,比起前一版本更加简单可行。

本文转自 FinderCheng 51CTO博客,原文链接:
http://blog.51cto.com/devbean/92925
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值