带有最大化按钮的Java模态窗口
我怎么能创建一个模态窗口并具有最大化按钮?
那么是否可以创建一个模态JFrame
或创建一个带有最大化按钮的JDialog
?
在大多数外观和感觉上,模态窗口(例如JDialog
)没有最大化按钮,因为它们根本不应该被最大化(或最小化)。
使用一些技巧可以添加一个maximise
按钮,但它将完全违背JDialog
工作方式。 如果您需要最大化按钮,最好的解决方案是使用JWindow
或JFrame
而不是JDialog
。 那些窗口支持最大化和最小化。
警告:无论如何,你都不应该这样做。
在JDialog
执行此操作的技巧:
setUndecorated(true); getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
解决方案1:在Windows上测试
我使用JFrame作为模态窗口
JFrame mainWindow = new JFrame; mainWindow.setVisible(true); JFrame modalWindow = new JFrame(); // The next two sentences gives modalWindow modal beahaviour mainWindow.setEnabled(false); mainWindow.setFocusable(false); modalWindow.setVisible(true);
解决方案2:在Ubuntu上测试
我添加了一个WindowFocusListener
addWindowFocusListener(new java.awt.event.WindowFocusListener() { public void windowGainedFocus(java.awt.event.WindowEvent evt) {} public void windowLostFocus(java.awt.event.WindowEvent evt) { formWindowLostFocus(evt);} private void formWindowLostFocus(java.awt.event.WindowEvent evt) { this.requestFocus(); this.toFront();}
这是另一个答案。
试试你是否错过最大化按钮? 作者:Santhosh Kumar。
它是一个实用程序类,使Frame模仿对话框。