2010-10-09 41 views

回答

10

在大多數外觀上,模態窗口(如JDialog)沒有最大化按鈕,僅僅因爲它們不應該被最大化(或最小化)。

使用一些技巧添加一個maximise按鈕是可能的,但它會完成對JDialog應該工作的方式。 如果您需要最大化按鈕,最好的解決方案是使用JWindowJFrame而不是JDialog。這些窗口支持最大化和最小化。


警告:你不應該這樣做,不管是什麼。

捉弄,讓JDialog做到這一點:

setUndecorated(true); 
getRootPane().setWindowDecorationStyle(JRootPane.FRAME); 
+0

因此,沒有任何「合法」的方式來做到這一點? :S – user 2010-10-10 14:30:48

+0

@JánosHarsányi,不,據我所說,他們不應該有一個最大化的按鈕。 – 2010-10-10 14:43:24

+0

有趣的h4x,但絕對不是一個好的做法 – 2012-10-09 14:18:36

1

解決方案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();} 
+1

解決方案2是「超級模式」,不管其他窗口是否可以選擇,不管是Java還是本地的。小心! – sillo01 2014-06-20 14:54:51