2011年9月19日星期一

Swing窗体嵌入本地窗口

前一段时间做一个项目,封装JAVA的COM接口实现,实现了数据类型的转换和事件的转换并实现了Swing窗口和本地HWND上的嵌入。
下面是Swing窗口嵌入本地窗口的代码总结。
JAVA的WEmbeddedFrame构造器可接受一个本地窗口的Handle,在Frame上在添加一个Panel,在Panel上添加一个JRootPane,再将Swing组件的JPanel添加到JRootPane的容器里,这样Swing组件就添加到本地窗口中了。
这是如果点击JAVA程序里Action,如果弹出的是模态对话框,这时发现模态对话框并没有起作用,解决方法如下,可给WEmbeddedFrame窗体添加ModalityListener监听器,实现modalityPopped和modalityPushed方法,modalityPopped代表JAVA应用里的对话框正在弹起,modalityPushed方法代表JAVA应用里的对话框正在销毁,实现使用JNI本地方法, 锁定本地窗口,这样就可实现模态对话框的作用,如在本地窗口进程里调用JAVA的弹出对话框,会出现死锁,也可以使用JNI本地方法实现。

没有评论:

发表评论