2009-08-14 3 views
1

Ich möchte einen Java FileDialog anzeigen und seine anfängliche Größe auf etwas Vernünftiges stellen (es zeigt nicht die Maximieren-Schaltfläche, und viele Benutzer wissen möglicherweise nicht, dass Sie stattdessen Alt-Space X verwenden können) . Ich habe SetBounds versucht, aber es hat nichts bewirkt, und ich sehe keine Methode zur Maximierung; Was vermisse ich?Java FileDialog programmgesteuert Größe einstellen

Update: zumindest unter Windows merkt sich der Systemdateidialog die Größe und maximiert den Status auch über Programmaufrufe hinweg, so dass der Benutzer sie nur einmal auf die gewünschte Größe einstellen kann und es bleibt so; das scheint ausreichend, also werde ich es dabei belassen.

+0

Einige Leute haben Auflösungen bei 2560x1600 oder höher. Maximierte Fenster bei dieser Auflösung sind abscheulich. –

+1

@Dave: Nicht, wenn Sie ein paar tausend Dateien zur Liste haben. –

Antwort

1

Zuerst würde ich empfehlen, JFileChooser von swing zu verwenden (es sei denn, Sie sind aus irgendeinem Grund auf awt beschränkt). Es hat viel mehr Optionen.

Zweitens erben sie beide von Komponente, die eine Methode setsize hat. Sie können die Größe des Benutzerbildschirms ermitteln und die Größe auf einen Prozentsatz festlegen.

Wollen Sie es unbedingt maximieren? Wenn ja, stellen Sie die Größe auf die Größe des Benutzerbildschirms ein.

Sie können die Bildschirmgröße mit erhalten: Dimension dim = Toolkit.getDefaultToolkit(). GetScreenSize();

Wenn dies Ihre Frage nicht beantwortet, seien Sie bitte genauer.

+0

Für die Liebe aller Dinge, die in dieser Welt gut sind, schlagen Sie bitte nicht vor, dass Leute Fenster maximieren. Meine Auflösung ist 2560 x 1600. –

+0

lol! Nun, ich biete nur die Mittel an. Nicht der gute Sinn brauchte es gut zu benutzen. ;) Aber ich könnte den Teil über die Maximierung herausnehmen. Er war derjenige, der es aufbrachte! –

1

Sie müssen pack() und dann setSize() aufrufen. Bis es voll ist, wird es nicht realisiert. Mach das Pack vor setVisible(). BTW, pack() wird den Dialog so skalieren, dass der Inhalt seine bevorzugte Größe erhält, so dass das was du willst.

Ich benutze einen AWT FileDialog, und hatte keine Probleme mit der Größe (ich hatte Probleme mit dem Versuch, es richtig zu lokalisieren, aber das ist ein separates Problem). Mein Code ist nur das Offensichtliche:

dlg=new FileDialog(owner,"Select File to Load",FileDialog.LOAD); 
dlg.setFile(null); 
dlg.setVisible(true); 

Die Standardgröße ist in meiner Erfahrung vollkommen angemessen. Und natürlich ist es mit der Maus skalierbar - da es sich um einen Dialog und nicht um einen Frame handelt, ist dieser nicht maximierbar.

Ich habe gerade ein paar Variationen von setSize() nach meinem dlg.setVisible() versucht, und es ignoriert sie vollständig, vielleicht weil es ein schwergewichtiges Fenster mit eigenen Ideen über seine Größe und Position ist. Ich muss zugeben, ich war immer überrascht, dass der FilenameFilter in Windows nicht funktioniert, was wie eine seltsame Einschränkung klingt.

+0

Ich versuchte Pack(), aber keinen Effekt. – rwallace