JFileChooser Buttons spielen verrückt

Status
Nicht offen für weitere Antworten.

chris80

Mitglied
Hallo zusammen,

bevor ich diesen Beitrag hier verfasst habe, habe ich schon anch meinem Problem in diesem Forum
gesucht und es hat mir auch sehr geholfen.

Aber ich jetzt hänge ich wieder fest und komme nicht weiter.

Also ich hab einen JFileChooser in meinem Programm.
Ich programmiere übrigens mit NetBeans 6.1

dieser FileChooser lässt sich ganz bequem über einen Button öffnen,
den ich dafür programmiert habe.

Allerdings ist es mir bisher noch etwas unklar wie ich gezielt die Buttons des FileChooser
"Öffnen" und "Abbrechen" ansprechen kann.

Hier im Forum hab ich dann gelesen das man das mit

"myChooser.APPROVE_OPTION" für den Öffnen Button
und
"myChooser.CANCEL_OPTION" für den Abbrechen Button

aber bei mir das Problem wenn ich das benutze dann
geht es etweder gar nicht
oder
es geht - aber nicht so wie es sein soll.

Ich habe versucht andere Methoden zu benutzen usw. nichts führt zum Erfolg.

Hier mal der Code:
Code:
private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
// TODO add your handling code here
    
    //System.out.println(jFileChooser1.getSelectedFile().getAbsolutePath().toString());
  
   if(jFileChooser1.CANCEL_OPTION == 1)
   {
        System.out.println(jFileChooser1.CANCEL_OPTION+" Cancel gedrückt");
       jFrame1.setVisible(false);
   }
  
   else
   { 
        if(jFileChooser1.APPROVE_OPTION == 1)
        {
            jFrame1.setVisible(false);
            System.out.println(jFileChooser1.APPROVE_OPTION+"Öffnen gedrückt");
       
        }
   }
}


Hoffe mir kann jemand helfen, bin langsam verzweifelt :(

Gruß Chris
 
B

Beni

Gast
In der Dokumentation gibt es ein nützliches Beispiel:
Code:
JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
        "JPG & GIF Images", "jpg", "gif");
    chooser.setFileFilter(filter);
    int returnVal = chooser.showOpenDialog(parent);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
       System.out.println("You chose to open this file: " +
            chooser.getSelectedFile().getName());
    }

:arrow: du musst "showOpenDialog" aufrufen, und den Rückgabewert dieser Methode mit APPROVE/CANCEL_OPTION vergleichen.
 

chris80

Mitglied
Hey danke für das Code-Beispiel, nur leider geht das nicht.

Wenn ich


Code:
int choosereturn = jFileChooser1.showOpenDialog(parent);

schreibe, dann bekomm ich eine Fehlermeldung, der mag das parent irgendwie nicht.
Fehlermeldung heißt: 119: parent is not public in java.awt.Component; cannot be accessed from outside package

Habe gesehen das einige anstatt "parent" "frame" geschrieben haben, aber das will er erst recht nicht, was mach ich denn da jetzt?

Hier nochmal der Code: (in Zeile 5 gibts den Fehler)


Code:
private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
// TODO add your handling code here
    
  int choosereturn = jFileChooser1.showOpenDialog(parent);
 
    
        if(choosereturn == jFileChooser1.APPROVE_OPTION)
        {
            jFrame1.setVisible(false);
            System.out.println(jFileChooser1.APPROVE_OPTION+"Öffnen gedrückt");
       
        }
        else System.out.println("Fehler");
   
}
 
B

Beni

Gast
Ich könnte jetzt ja böse sein und sagen "ein Anfängerbuch lesen"...

JFileChooser benötigt für seine showOpenDialog-Methode eine Component. Das Frame in dem diese Component ist, wird immer unter dem Dialog sein (das ist gut, sonst könnte der Dialog "wegrutschen"). Du kannst z.B. dein Hauptfenster, oder der Knopf der gedrückt wurde übergeben.

Ich weiss nicht wo diese "jFileChoose1ActionPerformed"-Methode steht, aber vielleicht genügt es schon "this" zu übergeben. Ansonsten kannst du auch mal "(Component)evt.getSource()" als Argument ausprobieren, da die Quelle des Events sehr wahrscheinlich ein (J)Button ist.
 

chris80

Mitglied
Also bücher habe ich schon einige gelesen und auch im Internet schon mehrfach gesucht. Ich bin ja auch auch schon weit gekommen finde ich, aber mir fehlt jetzt der etzte entscheidene Befehl. Hab gestern noch bis 3 Uhr rumprobiert und nix hat geholfen, das kann doch nicht so schwer sein. also "this" akzeptiert er zwar aber das Programm flippt danach völlig aus. Wenn ich (Component)evt.getSource() angeben, dann sagr der mir das der Rückgabetyp von evt.getSource() nicht in Component umgewandelt werden kann.

Was für eine Component will showOpenDialog denn haben? Ich hab mal versucht einfach ein Comonent Objekt zu erzeugen. aber sobald ich den new Operator anwende meckert er schon. "null" hinzuschreiben bringt auch nix.

@Benny: Bist du sicher das ich die Methode showOpenDialog anwenden muss? In der Hilfe steht das die Methode einen neuen FileDialog erzeugt. aber ich hab ja schon einen. Den hab ich ja mit NetBeans schon auf die GUI gezogen, also der ist schon da nur die Buttons gehen nicht.

Was kann ich denn da machen?

Hier mal der komplette Code vielleicht hilft das ja was.



Code:
public class SAXJFrame extends javax.swing.JFrame {

    /** Creates new form SAXJFrame */
    public SAXJFrame() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jFrame1 = new javax.swing.JFrame();
        jFileChooser1 = new javax.swing.JFileChooser();
        browseButton = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();

        jFileChooser1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jFileChooser1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane());
        jFrame1.getContentPane().setLayout(jFrame1Layout);
        jFrame1Layout.setHorizontalGroup(
            jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jFrame1Layout.createSequentialGroup()
                .addComponent(jFileChooser1, javax.swing.GroupLayout.DEFAULT_SIZE, 607, Short.MAX_VALUE)
                .addGap(20, 20, 20))
        );
        jFrame1Layout.setVerticalGroup(
            jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jFrame1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jFileChooser1, javax.swing.GroupLayout.DEFAULT_SIZE, 386, Short.MAX_VALUE)
                .addContainerGap())
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

        browseButton.setText("Durchsuchen...");
        browseButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                browseButtonActionPerformed(evt);
            }
        });

        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(37, 37, 37)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 145, 
javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(browseButton)
                .addContainerGap(319, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(34, 34, 34)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(browseButton))
                .addContainerGap(396, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
// TODO add your handling code here:
    jFrame1.setSize(530, 380);
    // jFrame1.pack();
    jFrame1.setVisible(true);
    jFrame1.setLocation(100, 100);

}                                            

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
// TODO add your handling code here:
}                                           

    @SuppressWarnings("static-access")
private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
// TODO add your handling code here
    
    //System.out.println(jFileChooser1.getSelectedFile().getAbsolutePath().toString());
  int choosereturn = jFileChooser1.showOpenDialog(null);
  /* if(jFileChooser1.CANCEL_OPTION == 1)
   {
        System.out.println(jFileChooser1.CANCEL_OPTION+" Cancel gedrückt");
       jFrame1.setVisible(false);
   }
  
   else*/
  System.out.println(choosereturn);  
        if(choosereturn == jFileChooser1.APPROVE_OPTION)
        {
            jFrame1.setVisible(false);
            System.out.println(jFileChooser1.APPROVE_OPTION+"Öffnen gedrückt");
       
        }
        else System.out.println("Fehler");
   
}                                             

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new SAXJFrame().setVisible(true);
            }
        });
    }
   
   
    // Variables declaration - do not modify                     
    private javax.swing.JButton browseButton;
    private javax.swing.JFileChooser jFileChooser1;
    private javax.swing.JFrame jFrame1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   

}
 
B

Beni

Gast
aber sobald ich den new Operator anwende meckert er schon. "null" hinzuschreiben bringt auch nix.
Verstehe jetzt nicht was du damit sagen willst :bahnhof:


@Benny: Bist du sicher das ich die Methode showOpenDialog anwenden muss? In der Hilfe steht das die Methode einen neuen FileDialog erzeugt. aber ich hab ja schon einen. Den hab ich ja mit NetBeans schon auf die GUI gezogen, also der ist schon da nur die Buttons gehen nicht.
Das ist der übliche Weg. Die Methode erstellt einen neuen Dialog, setzt aber den JFileCooser auf den Dialog bei dem du "showOpenDialog" aufgerufen hast.


Du benutzt den JFileChooser nicht unbedingt so wie er normalerweise benutzt wird. Normalerweise fügt man den JFileChooser nicht direkt einer Component (= JFrame, ...) hinzu.

Ich sehe zwei Möglichkeiten:

1. Du willst das wirklich so, also den JFileChooser direkt als Kind des Frames. In dem Fall kann ich nicht direkt weiterhelfen, da ich deinen Code nicht kompilieren kann (du benutzt Dinge die nur Netbeans kennt... und ich habe hier kein Netbeans). Müsstest dich nochmal melden, wenn ich mir Netbeans installieren soll.

2. Du hast das so zusammengeklickt, aber willst eigentlich den JFileChooser nicht erweitern oder umschreiben - nur benützen:
In diesem Fall ist das "addComponent(jFileChooser1, ..." falsch und muss weg. Dafür müsstest du in "browseButtonActionPerformed" dann diese "showOpenDialog" aufrufen.

P.S. falls dies das erste mal ist, dass du mit Swing arbeitest: schreib dir den Code von Hand damit du verstehst was passiert. Wenn du nicht weisst was im Hintergrund passiert, wirst du auch mit einem GUI-zusammenklick-Editor nie glücklich sein.
 

chris80

Mitglied
Hi Benny,

jo, das war wohl der entscheidene Hinweis. Ich hab jetzt alles unter "browseButtonActionPerformed" eingefügt und dann ging es plötzlich. Ich bekomme zwar 2 Warnungen aber das stört mich erstmal nicht solagne das läuft.

Also Dankeschön für den Hinweis, wenn die Warnungen doch noch probleme machen sollten meld ich mich noch mal.
Aber erstmal vielen Dank bis dahin.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
spacegaier JFileChooser - ActionCommand der Buttons AWT, Swing, JavaFX & SWT 2
Tommy135 JFileChooser ist sehr langsam AWT, Swing, JavaFX & SWT 13
T JFileChooser ist Englisch und bleibt Englisch und bleibt Englisch... AWT, Swing, JavaFX & SWT 15
M Swing jFileChooser Header viewTypeDetails setFont AWT, Swing, JavaFX & SWT 0
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Meeresgott AWT JFileChooser bestimmte Ordner anzeigen AWT, Swing, JavaFX & SWT 16
S Swing JFileChooser best. Ordner wie Dateien behandeln AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser für nicht existierendes Unterverzeichnis AWT, Swing, JavaFX & SWT 3
javampir Swing Anzeige der FileFilter im JFileChooser AWT, Swing, JavaFX & SWT 0
L JFileChooser Datentyp Unterscheidung AWT, Swing, JavaFX & SWT 6
K JFileChooser NullPointerException AWT, Swing, JavaFX & SWT 7
H JFileChooser Dateinamen vorgeben (Save Dialog) AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing JFilechooser - Detailansicht AWT, Swing, JavaFX & SWT 0
M JFileChooser Look and Feel AWT, Swing, JavaFX & SWT 2
T JFileChooser Rahmenfarbe ändern AWT, Swing, JavaFX & SWT 1
K Pfad mit JFileChooser ausgeben lassen AWT, Swing, JavaFX & SWT 7
C JFileChooser hängt bei Ausführung mit Terminal AWT, Swing, JavaFX & SWT 2
T Swing JFileChooser und FileView AWT, Swing, JavaFX & SWT 4
M Einzelne Ordner im JFileChooser ausgrauen? AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser inline editing AWT, Swing, JavaFX & SWT 4
D JFileChooser anpassen AWT, Swing, JavaFX & SWT 5
AssELAss Verzeichnis JFileChooser aktualisieren AWT, Swing, JavaFX & SWT 0
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
A Datei weiterverwenden mit JFileChooser AWT, Swing, JavaFX & SWT 6
T Importer-Auswahl im JFileChooser AWT, Swing, JavaFX & SWT 3
N JFileChooser bzw. FileDialog Problem AWT, Swing, JavaFX & SWT 10
A Swing JFileChooser - Größenänderung nach Aufruf von showOpenDialog() AWT, Swing, JavaFX & SWT 15
D Serverdirectory auf Client browsen mit JFileChooser AWT, Swing, JavaFX & SWT 7
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
C JFileChooser und Netzwerk Laufwerke AWT, Swing, JavaFX & SWT 4
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
P JFileChooser mit verschidene Endungen AWT, Swing, JavaFX & SWT 12
S Swing Ordner im JFileChooser auswählen AWT, Swing, JavaFX & SWT 2
C JFileChooser bringt parent durcheinander AWT, Swing, JavaFX & SWT 2
N JFileChooser mit Dateinamenvorgabe AWT, Swing, JavaFX & SWT 9
S JFileChooser GTK (Ubuntu) "hässlich" AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser mit modifiziertem Kontextmenü AWT, Swing, JavaFX & SWT 4
S JFileChooser öffnet den falschen Ordner AWT, Swing, JavaFX & SWT 4
A Swing JFilechooser zeigt verzeichnisse nicht an AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser - Anzeige in Echtzeit filtern AWT, Swing, JavaFX & SWT 10
M JFileChooser umbenennen verbieten AWT, Swing, JavaFX & SWT 4
Helgon JFileChooser öffnet sich 2x AWT, Swing, JavaFX & SWT 12
K JFileChooser mit Zusatzfunktionen AWT, Swing, JavaFX & SWT 8
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
V JFileChooser auf Mac und Netzwerkordner AWT, Swing, JavaFX & SWT 2
B JFileChooser breite der Spalten? AWT, Swing, JavaFX & SWT 5
M JFileChooser setCurrentDirectory() - Verzeichnis relativ zum Code/binary AWT, Swing, JavaFX & SWT 14
P Swing Dateinamen im JFileChooser vorschlagen AWT, Swing, JavaFX & SWT 11
M JFileChooser Abfangen des DateiTypen möglich?? AWT, Swing, JavaFX & SWT 5
T Swing JFileChooser --> Desktop und Laufwerke im "Suchen in" - Drop Down AWT, Swing, JavaFX & SWT 3
N JFileChooser - Keine Funtkion AWT, Swing, JavaFX & SWT 13
T JFileChooser - "Öffnen-Button" aktivieren/deaktivieren möglich??? AWT, Swing, JavaFX & SWT 2
jueki Aktuell eingestellten Filter aus einem JFileChooser abfragen. AWT, Swing, JavaFX & SWT 5
F Swing JFileChooser - Dateinamen nicht editierbar machen AWT, Swing, JavaFX & SWT 8
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
Ivan Dolvich [Linux] JFileChooser sieht komisch aus... AWT, Swing, JavaFX & SWT 12
M Zurück-Button in JFileChooser AWT, Swing, JavaFX & SWT 9
N JFileChooser AWT, Swing, JavaFX & SWT 4
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
S JFileChooser Dateiname Autovervollständigung AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
I Swing JFileChooser '\' im Pfad... AWT, Swing, JavaFX & SWT 2
K Swing JFileChooser zum Speichern - FileFilter AWT, Swing, JavaFX & SWT 2
M Swing Execption beim JFileChooser AWT, Swing, JavaFX & SWT 4
kodela Swing JFileChooser und die Datei-Extension AWT, Swing, JavaFX & SWT 3
jueki eigenen Button in JFileChooser einfügen AWT, Swing, JavaFX & SWT 7
alderwaran jFileChooser showSaveDialog, dateinamen werden mit pfadnamen überschrieben beim navigieren AWT, Swing, JavaFX & SWT 1
B Swing Suche JFileChooser zum Speichern AWT, Swing, JavaFX & SWT 2
Iron Monkey JFileChooser DIRECTORIES_ONLY AWT, Swing, JavaFX & SWT 4
Semox Swing JFileChooser: Problem Approve oder Cancel abzufangen AWT, Swing, JavaFX & SWT 7
H JTree - nach Auswahl aus JFileChooser wird nur der erste Knoten angezeigt AWT, Swing, JavaFX & SWT 3
kodela Sicherheitsabfrage mit JFileChooser AWT, Swing, JavaFX & SWT 2
DARK_ZERATO2 jFileChooser AWT, Swing, JavaFX & SWT 4
G JFileChooser Problem AWT, Swing, JavaFX & SWT 4
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
P JFileChooser AWT, Swing, JavaFX & SWT 2
M Swing JFileChooser und JFrame AWT, Swing, JavaFX & SWT 5
G Swing JFileChooser in einem JPanel? AWT, Swing, JavaFX & SWT 3
J JFileChooser Dateiauswahl beim Tippen einschränken AWT, Swing, JavaFX & SWT 3
M Swing JFileChooser mit Windows 7 AWT, Swing, JavaFX & SWT 8
R JFileChooser - Initiales Verzeichnis auswählen AWT, Swing, JavaFX & SWT 8
brainray JFileChooser - es sollen nur Ordner wählbar sein AWT, Swing, JavaFX & SWT 2
T JFileChooser Problem AWT, Swing, JavaFX & SWT 3
N Mit JFileChooser ein Verzeichnis auswählen AWT, Swing, JavaFX & SWT 7
M Swing JFileChooser und versteckte Ordner AWT, Swing, JavaFX & SWT 2
F jFileChooser verwenden AWT, Swing, JavaFX & SWT 4
M Swing ImageIcon über JFileChooser einbinden AWT, Swing, JavaFX & SWT 4
F JFileChooser mal wieder AWT, Swing, JavaFX & SWT 2
ARadauer Swing JFileChooser mit Bildvorschau AWT, Swing, JavaFX & SWT 5
H Swing Dateiauswahldialog mit JFileChooser funktioniert unzuverlässig AWT, Swing, JavaFX & SWT 11
G Swing JFileChooser nur in Verzeichnis+Unterverzeichnisse AWT, Swing, JavaFX & SWT 5
K Swing JFileChooser AWT, Swing, JavaFX & SWT 6
M JFileChooser einschränken AWT, Swing, JavaFX & SWT 3
L JFileChooser braucht lang zum öffnen AWT, Swing, JavaFX & SWT 2
S NullPointerException bei JFileChooser AWT, Swing, JavaFX & SWT 8
M JFilechooser defaultdirectory AWT, Swing, JavaFX & SWT 5
C JFilechooser this.setAlwaysOnTop AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben