in Abhänigkeit vom FileFilter, externes Programm ausführen

mike2707

Mitglied
Hallo Leute,
ich bin dabei einen Explorer zu schreiben.

Ich habe mehrere FileFilter (z.B. für txt-files) erstellt.
Wenn ein Benutzer ein txt-File im jFileChooser auswählt, soll sich das notepad.exe starten.
Weiss aber nicht, wo ich die Verbindung setze zwischen dem FileFilter und dem notepad.exe

Hier Auszüge aus meinem Code:
Java:
// FileFilter für *.txt und *.rtf-files
jFileChooser1.addChoosableFileFilter(new FileFilter() {

            @Override
            public boolean accept(File f) {
               String name = f.getName();
        if (name.toLowerCase().endsWith(".txt") || name.endsWith(".rtf") )
            return true;
        return false;
            }

            @Override
            public String getDescription() {
               return "Textformate (*.txt; *.rtf)";
            } 
        }
);

Dann habe ich noch dieses
Java:
Runtime.getRuntime().exec("notepad.exe");

Ich muss bestimmt eine if-Abfrage einbauen, damit notepad.exe nur ausgeführt wird, wenn eine *.txt-file ausgewählt ist und der User auf öffnen klickt. Aber wie?

Kann mir jemand helfen?

Danke und Gruß
Mike
 

eRaaaa

Top Contributor
Der FileChooser hat nichts damit zu tun was mit der ausgewählten Datei dann passiert. Der ist nur fürs Auswählen zuständig, der Filter eben dafür um bestimmte Dateien/Ordner anzuzeigen, mehr passiert da nicht. Mit der if-Abfrage warst du schon richtig. Nach dem Anzeigen des FileChoosers holst du dir die ausgewählte Datei/n mit getSelectedFile/getSelectedFiles() und musst dann eben selbst ermitteln wie die Dateiendung ist und dann entsprechend darauf reagieren.
Bist du dir sicher dass du immer notepad öffnen willst?
 

mike2707

Mitglied
Hallo eRaaaa,

danke für das Feedback.

Nein, notepad.exe soll sich nur bei Textfiles öffnen. Ich habe noch einen weiteren Filter für *.odt/*.doc-Files. In diesem Fall soll sich dann swriter.exe öffnen.

Ich benötige wahrscheinlich eine if-Abfrage. Aber wie gesagt, da weiss ich nicht, wo ich ansetzen soll.

if (dateiendung .txt)
öffne notepad

if (dateiendung .doc)
öffne openoffice
 

eRaaaa

Top Contributor
hehe dass du auch andere Dateiendungne prüfst war mir klar, sonst wärs ja unlogisch, ich wollte eben genau auf das heraus was raiL schrieb. Wieso öffnest du txt Dateien nicht mit dem System-Standard ? Nicht jedes System hat notepad.exe drauf :)
Und zu deiner if-Abfrage, schau mal was du in deinem FileFilter machst :)
Da bekommst du doch auch ein File übergeben und überprüfst die Dateiendung mit endsWith...genauso kannste das auch mit dem File-Objekt machen welches selektiert wurde! Nicht einfach nur copy+paste, auch versuchen zu verstehen *klugscheiss* :bae:
 

mike2707

Mitglied
nene, ich schreibe auch mal was zur Abwechslung :)

Mir ist gerade ein Licht aufgegangen :)
Bin mal soweit gekommen. Jetzt das ganze mit dem öffnen Dialog verbinden und es müsste funktionieren.

Java:
if (jFileChooser1.equals(app) ) {
        if (jFileChooser1.getSelectedFile().getName().endsWith(".txt"))
            Runtime.getRuntime().exec("notepad.exe");
        }

An der ersten if-Abfrage muss ich noch was ändern.

@raiL: Desktop.getDesktop().open() scjhau ich mir noch an. Danke.
Bin ja mehr noch Anfänger und Hobyprogrammierer :)

Gruß
Mike
 

mike2707

Mitglied
Erledigt ist es noch nicht. Bin noch am ausprobieren.

Zur Zeit hänge ich bei JFileChooser.APPROVE_OPTION.

Java:
if( ??? == JFileChooser.APPROVE_OPTION ) {
        if (jFileChooser1.getSelectedFile().getName().endsWith(".txt"))
            Runtime.getRuntime().exec("notepad.exe");
       
        }

Wenn ich es hinbekomme sage ich bescheid und poste für die anderen den Quellcode.

Gruß
Mike
 

mike2707

Mitglied
Die Dokus habe ich schon gesehen. Danke.

Java:
int retval = jFileChooser1.showOpenDialog(mainPanel);

 if(  retval == JFileChooser.APPROVE_OPTION ) {
        if (jFileChooser1.getSelectedFile().getName().endsWith(".txt") ) 
            Runtime.getRuntime().exec("notepad.exe") ;      
        }

Das Programm wird kurz geschlossen. Notepad öffnet sich. Programm wird wieder aktiviert.
Wenn ich das Notepad schliesse, und eine neue Datei auswähle, tut das Programm nix mehr. Warum? Habe ich ein Denkfehler?

Wie übergebe ich dem Aufruf die ausgewählte Datei?

Danke
 
Zuletzt bearbeitet:

mike2707

Mitglied
Update:
Java:
int retval = jFileChooser1.showOpenDialog(mainPanel);
Desktop d = Desktop.getDesktop();

 if(  retval == JFileChooser.APPROVE_OPTION ) {
        if (jFileChooser1.getSelectedFile().getName().endsWith(".txt") )  
        d.open(jFileChooser1.getSelectedFile() );
        }

Das Programm wird kurz geschlossen. Notepad öffnet sich. Programm wird wieder aktiviert.
Wenn ich das Notepad schliesse, und eine neue Datei auswähle, tut das Programm nix mehr. Warum? Habe ich ein Denkfehler?
 

mike2707

Mitglied
Habe eine Lösung.
Nur die Buttons werden noch nicht korrekt angesprochen, aber das bekomme ich auch noch hin :)

Hier der Code.
Java:
private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {
       
if (jFileChooser1.getSelectedFile().getName() != null ) {
            try {
                Desktop d = Desktop.getDesktop();
                d.open(jFileChooser1.getSelectedFile());
            } catch (IOException ex) {
                Logger.getLogger(DesktopApplication1View.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

Gruß
Mike
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
K JFileChooser --> FileFilter --> FilenameFilter problem Allgemeine Java-Themen 5
O Maven ein externes jar laden ohne die Applikation neu zu kompilieren Allgemeine Java-Themen 4
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
Thallius Herausfinden ob ein externes Programm schon gestartet ist? Allgemeine Java-Themen 10
H Externes Programm, Parameter Allgemeine Java-Themen 6
S externes Mehrweg-Mischen Allgemeine Java-Themen 3
T Externes Programm auf anderem Bildschirm starten Allgemeine Java-Themen 3
F Externes Programm starten, Speicheraufwändig Allgemeine Java-Themen 7
cedi int Zahl in ein ASCII zeichen umwandeln und dieses in ein externes Textfenster schreiben Allgemeine Java-Themen 6
E Externes bat sichtbar ausführen Allgemeine Java-Themen 4
F externes Programm beginnt erst nach dem ende des mainprogrammes Allgemeine Java-Themen 3
H Externes Programm in JAR einbinden Allgemeine Java-Themen 11
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
N Externes Programm steuern Allgemeine Java-Themen 12
L Externes Bash Script aus Java Datei heraus starten Allgemeine Java-Themen 2
J Externes Programm - Konsolenausgabe kopieren/sichtbar machen Allgemeine Java-Themen 22
J Externes Programm starten und stoppen (Linux) Allgemeine Java-Themen 3
B Externes Programm starten - Konsolenausgabe anzeigen lassen? Allgemeine Java-Themen 2
P Externes Programm starten und beeinflussen Allgemeine Java-Themen 11
S externes programm Allgemeine Java-Themen 6
padde479 Externes Programm starten Allgemeine Java-Themen 7
C externes Programm läuft erst nach schließen des mainprogramm Allgemeine Java-Themen 7
T Mit java externes Programm starten Allgemeine Java-Themen 4
W Externes Programm beenden mit eigenem Programm beenden Allgemeine Java-Themen 7
M Externes Programm ausführen Allgemeine Java-Themen 2
N externes Sortieren (MergeSort Allgemeine Java-Themen 2
M externes Programm aus Java heraus starten Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben