日期:2014-05-20  浏览次数:20747 次

Swing 如何弹出模式窗体,同时窗体上有最大化、最小化和关闭按钮
JFrame 上有最大化、最小化和关闭按钮,但是JFrame 无法弹出模式窗体。
JDialog 可以弹出模式窗体,但是JDialog 上只有一个关闭按钮,没有最大化、最小化按钮。
如何使JFrame 弹出模式窗体 ?或者如何使JDialog上有最大化、最小化和关闭按钮。

------解决方案--------------------
探讨
JFrame 上有最大化、最小化和关闭按钮,但是JFrame 无法弹出模式窗体。
JDialog 可以弹出模式窗体,但是JDialog 上只有一个关闭按钮,没有最大化、最小化按钮。
如何使JFrame 弹出模式窗体 ?或者如何使JDialog上有最大化、最小化和关闭按钮。

------解决方案--------------------
这个问题还真有点犀利哦。
------解决方案--------------------
基本上两种做法:
1、JDialog方法:dialog.setUndecorated(true); 然后自己重写整个外框;
2、JFrame方法:父窗口隐藏;子窗口监听windowDeactivated,强制requestFocus();
------解决方案--------------------
JFrame模态两种方法: 
1) JNI 
2)
frame.addWindowFocusListener(new WindowFocusListener() { 
public void windowGainedFocus(WindowEvent e) {} 
public void windowLostFocus(WindowEvent e) { 
frame.toFront(); 
}
} ); 

这里有讨论帖:
http://topic.csdn.net/t/20060929/15/5056950.html

不过话说回来,为什么会有这种需要呢?
------解决方案--------------------
如果用Swing的话目前这个问题无解.
如果是用SWT的话,这个问题就不是问题.
------解决方案--------------------
JNI