# JFileChooser öffnet sich 2x



## Helgon (7. Jan 2012)

Hey. Hätt kurz ne Frage

Ich hab folgendes 


```
int returnVal = fc.showOpenDialog(ControlPanel.this);
			if(returnVal == JFileChooser.APPROVE_OPTION)
				file0 = fc.getSelectedFile();
```

Also einfach nur das der FileChooser aufgeht und ich ne Datei anklicken kann.
Klappt auch alles, aber wenn ich dann auf öffnen drücke, öffnet sich der FileChooser nochmal.
Also file0 hat dann schon den richtigen Pfad (wenn ichs zur Kontrolle ausgeben seh ichs ja), aber wenn er sich dann das zweite mal geöffnet hat (nachdem ich auf öffnen im ersten gedrückt hab) und dann im zweiten öffnen drücke, öffnet er nix, sondern schliest sich dann so wie er von Anfang an sollte.

Klingt grad etwas verwirrend, aber genau so ist es


----------



## bERt0r (7. Jan 2012)

Wo steht denn der Code drinnen, in einer Funktion, in einem Listener? Wie oft werden diese 3 Zeilen denn ausgeführt, kannst ma mal ein System.out.println reinmachen.


----------



## Helgon (7. Jan 2012)

Steht in nem ActionListener von nem Button.

Also nochmal:

Drücke Button -> 
FileChooser öffnet sich ->
Ich wähle die Datei aus ->
Drücke im FileChooser Fenster auf öffnen (die Datei eben) ->
(file0.toString() zeigt das der Pfad der Datei richtig ist) ->
->Das erste FileChooser Fenster schliest sich und dafür öffnet sich ein neues ->
Drücke im (zweiten) FileChooser Fenster auf öffnen ->
(file0.toString() zeigt das sich gar nichts getan hat APPROVE_OPTION wahrscheinlich false) ->
-> zweites Fenster schliest sich.

Also es nicht so, dass es nicht funktioniert wie es sollte. Es öffnet sich einfach ein zweites fenster -.-


```
jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
```


```
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
		
		switch(jComboBox1.getSelectedIndex())
		{
		case 0:
			
			int returnVal = fc.showOpenDialog(ControlPanel.this);
			if(returnVal == JFileChooser.APPROVE_OPTION){
				file0 = fc.getSelectedFile();
				System.out.println(file0.toString());

			}
			
			break;
}
```


----------



## bERt0r (7. Jan 2012)

Also im Debuggen bist du noch nicht weit... Sowas sollst du machen:

```
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
         System.out.println("jButton1ActionPerformed wurde gestartet!");
        switch(jComboBox1.getSelectedIndex())
        {
        case 0:
            
            int returnVal = fc.showOpenDialog(ControlPanel.this);
            if(returnVal == JFileChooser.APPROVE_OPTION){
                file0 = fc.getSelectedFile();
            }
            
            break;
}
```


----------



## Helgon (7. Jan 2012)

Öhm und was soll mir das bitte bringen?

Jetzt lautet die Ausgabe eben


jButton1ActionPerformed wurde gestartet!
C:\Users\Michael\Documents\~diffdafftop.htm


?

Das es klappt weis ich doch, die Frage ist warum mir der Dialog 2x angezeigt wird


----------



## bERt0r (7. Jan 2012)

Damit du siehst wie oft deine Funktion ausgeführt wird. Steht 2 mal jButton1ActionPerformed wurde gestartet! da, hast du z.B den Listener doppelt geaddet.


----------



## Helgon (7. Jan 2012)

Ja das ist mir klar, trotzdem danke. Sonst hätte ich ja auch mit 
	
	
	
	





```
System.out.println(file0.toString());
```

schon gezeigt, aber daran liegts nicht.

Bin mich echt am wundern woher das 2te Fenster kommt :/


----------



## bERt0r (7. Jan 2012)

Das problem ist, dass dein Printline in einer Abfrage  ist und muss nunmal nicht jedesmal ausgeführt werden, wenn dein Filechooser angezeigt wird. Wird deine Funktion jetzt mehrmals aufgerufen oder hast du einen äußerst seltsamen, okkulten Bug gefunden?


----------



## Helgon (7. Jan 2012)

Tja das frag ich mich auch, 2x aufgerufen definitiv nicht.
Hatte bis jetzt keine Zeit noch dran rum zu probieren, aber heut Abend. Werd dann aufjedenfall mal meine "Lösung" poste und mal schauen wo mein dummer Fehler lag.

Grüße


----------



## bERt0r (7. Jan 2012)

Ich tippe mal, dein Programm schaut in etwa so aus:

```
public class DoppelFileChooser extends JFrame {

	private JPanel contentPane;
	private JFileChooser fc;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					DoppelFileChooser frame = new DoppelFileChooser();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public DoppelFileChooser() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		fc=new JFileChooser();
		JButton btnNewButton = new JButton("New button");
		ActionListener al=new ActionListener() {
			public void actionPerformed(ActionEvent arg0) 
			{
				System.out.println("Listener gefeuert");
				 switch(0)
			        {
			        case 0:
			            
			            int returnVal = fc.showOpenDialog(DoppelFileChooser.this);
			            if(returnVal == JFileChooser.APPROVE_OPTION){
			                File file0 = fc.getSelectedFile();
			                System.out.println(file0);
			            }
			            
			            break;
			        }
			}
		};
		btnNewButton.addActionListener(al);
		btnNewButton.addActionListener(al);
		contentPane.add(btnNewButton, BorderLayout.CENTER);
	}
}
```


----------



## Helgon (7. Jan 2012)

Ne nicht ganz. Istn recht komplexes GUI, also mim NetBeans Builder gebastelt.

Wie da der Aufbau ist weiste ja sicher


----------



## Helgon (7. Jan 2012)

Hab mal schnell paar screens gemacht

1-3 

im ersten wenn ich drücke kommt der FileChooser, ich wähle dort eine Datei, drücke "öffnen"
und es erscheint ein neuer FileChooser, der bereits diese Datei bereits ausgewählt hat (siehe Dateiname)

Vllt ist das Problem so besser verständlich. Es sind KEINE 2x RICHTIGEN FileChooser. der zweite wirkt wie ne leere maske wo nur die datei ausgewählt ist.

Grüße


----------



## Helgon (7. Jan 2012)

Ach du scheise. Pc mal neu gestartet und jetzt klappts.  :autsch::lol:???:L

Naja, froh das es jetzt klappt 

Auf jeden Fall danke


----------

