博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MDI子窗口间的数据共享
阅读量:7052 次
发布时间:2019-06-28

本文共 1115 字,大约阅读时间需要 3 分钟。

声明:本文章中介绍的内容可以在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

转载地址:http://ysvol.baihongyu.com/

你可能感兴趣的文章
个人收集的java精品网站
查看>>
Python多版本情况下四种快速进入交互式命令行的操作技巧
查看>>
如何在基于Bytom开发过程中集成IPFS
查看>>
后台管理,给列表页新增查询功能,所遇到的问题及感想
查看>>
GraalVM 社区版 1.0 RC15 发布,新一代高性能跨语言虚拟机
查看>>
阿里架构师眼里JVM可以说的那些事
查看>>
C#实现局部峰值查找,功能对应Matlab中的findpeaks.m
查看>>
响应式编程
查看>>
The Road to learn React书籍学习笔记(第一章)
查看>>
WPF 自定义控件的坑(蠢的:自定义控件内容不显示)
查看>>
Confluence 6 空间标识
查看>>
使用kubeadm安装Kubernetes v1.10以及常见问题解答
查看>>
Linux FTP上传脚本
查看>>
Robot Framework之pymysql数据库查询
查看>>
干货 | 机器学习没有你想的那么复杂
查看>>
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 16 章 从源代码安装_16.1. 简单版
查看>>
springMVC的事务不回滚
查看>>
WPF与缓动(三) 指数缓动
查看>>
UPS电源和EPS电源的主要区别
查看>>
虚拟接VMnet1 和VMnet8的区别
查看>>