JFileChooser aus einem Befehlszeilenprogramm und erscheint unter allen Fenstern

8

Ich habe den jFileChooser in meinem Kommandozeilenprogramm implementiert und es funktioniert genauso wie es sollte mit nur einem nervigen Problem. Es scheint, dass es unter jedem Fenster ohne jede Art von Alarm öffnet. Tatsächlich habe ich es sogar ein paar Mal verpasst, was mich dazu gebracht hat zu glauben, dass ich es falsch umgesetzt habe.

Ich habe das wie folgt implementiert:

%Vor%

Grundsätzlich möchte ich nur den jFileChooser, damit der Benutzer eine Datei als Eingabedatei auswählen kann. Dies ist die einzige Komponente, die eine GUI-Implementierung benötigt. Wenn ich also das Schreiben einer GUI vermeiden kann, wäre das hilfreich.

    
kyle phill 21.09.2011, 04:06
quelle

3 Antworten

10

Nachdem ich verschiedene Dinge aus verschiedenen Stack-Overflow-Themen ausprobiert habe, kam ich zu einem Ergebnis, das sich durchgängig und zuverlässig über jedem Fenster von Windows 7 öffnet.

%Vor%

Wie es in meinem Programm steht, ist es eine innere Klasse und wird aufgerufen durch Aufruf von:

%Vor%     
kyle phill 24.09.2011, 03:08
quelle
4

Ich denke an zwei mögliche Ursachen für so etwas:

  • Sie versuchen, AWT- und Swing-GUI in demselben Programm oder
  • zu mischen
  • Sie versuchen, ein Konsolenprogramm (z. B. mit System.out.println (...) und Eingabe über ein Scanner-Objekt) mit einer Swing-GUI zu mischen.

Wenn Sie eines dieser beiden Dinge tun, sollten Sie es vereinfachen und es nur zu einem Swing-GUI-Programm machen. Wenn diese Informationen nicht helfen, können Sie uns weitere Informationen zu Ihrem Problem geben.

Bearbeiten 1
Ich habe gerade die Details Ihres Codes bemerkt. Der neue JPanel () -Teil unten ist ein Problem:

%Vor%

Damit der JFileChooser als -Dialog für Ihr Fenster der obersten Ebene fungiert (was er derzeit nicht tut und das Ihr Hauptproblem ist), sollten Sie stattdessen eine Komponente übergeben, die sich im übergeordneten Bereich befindet Ebenenfenster, z. B. eine JPanel oder JButton, die in Ihrem JFrame oder JApplet enthalten ist.

Bearbeiten 2
OK, Sie versuchen, ein Java-Konsolenprogramm mit einem Swing-GUI-Programm zu mischen, das ist, als würde man Eis mit Essiggurken essen - sie passen einfach nicht zusammen. Es gibt kein Top-Level-Fenster, das der showOpenDialog-Methode von JFileChooser angeboten werden kann, sodass es als echter Dialog fungiert.

Die beste Lösung ist, dies nicht zu tun, sondern Ihre Anwendung als vollständige Swing-GUI neu zu schreiben.

    
Hovercraft Full Of Eels 21.09.2011 04:17
quelle
3

In meinem Code kann ich einfach null verwenden und es funktioniert. Ich verwende Java 7 unter Windows 7.

%Vor%     
Eric 30.03.2014 11:30
quelle