2010-10-09 12 views

Odpowiedz

10

W przypadku większości wyglądów i modów okna modalne (takie jak JDialog) nie mają przycisku maksymalizacji tylko dlatego, że nie powinny być w ogóle zmaksymalizowane (lub zminimalizowane).

Jest możliwe, że przy niektórych trikach można dodać przycisk maximise, ale będzie to całkowicie sprzeczne ze sposobem, w jaki ma działać JDialog. Jeśli potrzebujesz przycisku maksymalizacji, najlepszym rozwiązaniem byłoby użycie JWindow lub JFrame zamiast JDialog. Te okna obsługują maksymalizację i minimalizację.


UWAGA: Nie należy zrobić, nie wiem co.

Sztuczka to zrobić w JDialog:

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

Więc nie ma żadnego "legalnego" sposobu, aby to zrobić? : S – user

+0

@ János Harsányi, Nie, jak powiedziałem, nie powinny mieć przycisku maksymalizacji. –

+0

Interesujące h4x, ale zdecydowanie nie jest to dobra praktyka. –

1

Rozwiązanie 1: Testowane na Windows

użyłem JFrame dla modalnego okna

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); 

Rozwiązanie 2: Testowane na Ubuntu

Dodałem 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

Rozwiązanie 2 jest "super modalne", nie można wybrać żadnego innego okna, bez względu na to, czy jest to Java, natywna, czy jakakolwiek. Bądź ostrożny! – sillo01

Powiązane problemy