WizardDialog Maximalgrösse?

flogy92

Mitglied
Guten Morgen allerseits

Ich versuche gerade das Hauptfenster meiner Java Applikation so zu gestalten, dass man dessen Grösse nicht mehr verändern kann. Es handelt sich dabei um einen WizardDialog. Die Minimalgrösse konnte ich einfach über
Code:
WizardDialog dialog = new WizardDialog(eclipseShell, wizard);
dialog.getShell().setMinimumSize(480, 630);
angeben - jedoch scheint das mit der Maximalgrösse nicht so leicht zu sein. Es gibt nämlich weder einen setResizeable(), noch einen setMaximumSize() Befehl.

Gibt es eine andere Lösung, die Maximalgrösse des Fensters anzugeben, bzw um die Fenstergrösse einfach nicht mehr veränderbar zu machen?

Vielen Dank schonmal!

MfG
flogy
 
Hi,

das einzige was ich auf die schnelle gefunden hab: Gib bei dem Constructor für die Shell weder RESIZE, noch SHELL_TRIM an (da ist RESIZE mit drin), dann sollte man die Größe nicht ändern können.

MfG,
DarkWizzard
 
Hallo,

danke für die Antwort!

Da habe ich gar nichts in der Art angegeben:
Code:
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
Shell eclipseShell = window.getShell();
IWizard wizard = new CreateWebFlowWizard();
WizardDialog dialog = new WizardDialog(eclipseShell, wizard);
dialog.create();
dialog.getShell().setMinimumSize(480, 630);
dialog.open();

MfG
flogy
 
Hi,

ok, du kommst also nicht an den Constructor ran. Das macht das ganze schwieriger. Also ich hab noch ein bisschen gesucht und folgendes gefunden:

Der Constructor vom WizardDialog sieht anscheinend so aus:

Code:
public WizardDialog(Shell parentShell, IWizard newWizard) {
     super(parentShell);
     setShellStyle(SWT.CLOSE | SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL | SWT.RESIZE);
     setWizard(newWizard);
     // since VAJava can't initialize an instance var with an anonymous
     // class outside a constructor we do it here:
     cancelListener = new SelectionAdapter() {
       public void widgetSelected(SelectionEvent e) {
         cancelPressed();
       }
     };
   }
(Quelle: http://www.docjar.com/html/api/org/eclipse/jface/wizard/WizardDialog.java.html)

Interessant ist jetzt diese "setShellStyle" Methode, die von "org.eclipse.jface.window.Window" geerbt wird. Wenn man dazu nachschaut findet man folgendes:

Sets the shell style bits. This method has no effect after the shell is created.

Das irritiert mich schon ein bisschen weil ich dachte die Shell wäre schon fertig. Ich hab aber grad nicht so die Zeit weiter danach zu suchen, deswegen mein Vorschlag: Wenn du nichts besseres findest versuch einfach nen eigenen WizardDialog abzuleiten und führe nach dem Super Constructor die "setShellStyle"-Methode ohne dieses SWT.RESIZE aus. Vielleicht hilft das ja.

MfG,
DarkWizzard
 
Oder du überwachst, ob das Fenster in der Größe geändert wurde und ermittelst daraufhin die neue Fenstergröße.. Sollte das Fenster größer sein, als von dir gedacht, .. machste es wieder kleiner. Wäre ein kleiner Umweg und keine ideal Lösung, da ein temporäses Verändern möglich ist, aber leicht(er) umzusetzen.
 
Das hat wunderbar funktioniert mit dem Ableiten und dem Weglassen von SWT.RESIZE.
Vielen Dank!

@Herbertus:
Daran habe ich auch gedacht, jedoch ist es mit DarkWizzard's Lösung schon sauberer. Danke trotzdem :)
 
Zuletzt bearbeitet:
Zurück