Swing Files auflisten (JButton, JList, Exception)

Risdyk

Mitglied
HI
ich bin gerade dabei ein Tool für ein Spiel zu Programmieren, womit ich ScreenShots und Demos verwalten kann. Und ich stecke an einigen stellen fest, da ich vorher nie was mit GUI zu tun hatte.

Ein oder 2 Fehler konnte ich schon mal hier auf das Wesentliche reduzieren anhand dieses Beispieles:

Wenn ich bei new File("C:\\") mache hab ich eine Exception die aber in der Console(Eclispse) wieder verschwindet und trotzdem alles anzeigt die ganze Liste.
Aber wenn ich new File("C:\\Games\\") mache (den Ordner nicht gibt es nicht), wird es von der Exception nicht abgefangen warum?
Wo ist mein Fehler?

[Java]
import java.awt.BorderLayout;
import java.io.File;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;


public class JListTest {
public static JFrame fenster;
public static String fileArray[];
public static JList liste;

public static void main (String [] args) throws Exception{
fenster = new JFrame();
fenster.setLayout(new BorderLayout());

try {
File file = new File("C:\\Games\\");
fileArray = file.list();
}
catch (Exception e){
fileArray = new String[1];
fileArray[0] = "Bitte Spiele Ordner auswählen";

}
liste = new JList(fileArray);

JScrollPane pane = new JScrollPane(liste);
fenster.add(pane);

fenster.setSize(500,600);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
[/Java]

Anschließend möchte ich den String als Statische Variable abspeichern die von andere Klasse geändert wird (Pfad des Ordners).
Wie stelle ich an das die Änderung auf JList übertragen wird und im JFrame angeziegt wird, ich habe schon mit repain() und validate() Methoden auf die JListe und JPanel wo die Liste angezeigt wird probiert, aber ohne Erfolg.
Ich habe schon testweise mit JTextArea gemacht und das hab ich hin gekriegt, aber ich wollte aus der "liste" Sachen auswählen und deswegen musste ich das auf JList umbauen.

Wäre nett wenn ihr paar Tips habt.
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Exception die einfach verschwindet? Kann es sein, dass sich einfach kurzzeitig eine andere Console zeigt, wo irgendwelche Fehler stehen?

Zu dem NullPointer: Auszug aus der API:
"File.list(): Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs"
Wenn es also nicht existiert, kriegst du keine Exception und du bekommst ein null zurück. Dann machst du folgendes:
[JAVA=27]
liste = new JList(fileArray);
[/code]
Und da kommt also die Exception... die auch nicht abgefangen wird, weil die ja nicht im try-Block ist.

Im Grunde musst du also nicht die Exception abfangen, sondern anschließend auf
Code:
null
prüfen
 

Risdyk

Mitglied
ohh super danke dir

jetzt läuft das
[Java]
import java.awt.BorderLayout;
import java.io.File;

import javax.swing.*;

public class JListTest {
public static JFrame fenster;
public static String fileArray[];
public static JList liste;

public static void main(String[] args) throws Exception {
fenster = new JFrame();
fenster.setLayout(new BorderLayout());

File file = new File("F:\\UT2004\\");
fileArray = file.list();

if (fileArray == null) {
fileArray = new String[1];
fileArray[0] = "Bitte Spiele Ordner Auswählen";
liste = new JList(fileArray);
} else {
liste = new JList(fileArray);
}

JScrollPane pane = new JScrollPane(liste);
fenster.add(pane);

fenster.setSize(500, 600);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
[/Java]

ja und was andere Fehlermeldung betrift die wurde nur paar Millisekunden angezeigt und dann war die Console wieder leer. Wegen anderem Fenster hab ich bei Eclipse es etwas geguckt und habe bei Debug Fenster was gefunden sowas wie History er hat also für die paar Millisekunden die alte History angezeigt das hat mich natürlich etwas verwirrt, jetzt habe ich die History entfernt und nun ist alles ok keine Fehlermeldung mehr!

So nun zur der zweiten Frage ich habe hier wieder verkürztes Beispiel gemacht, das von oben etwas erweitert ganz simpel um beim wesentlichen zu bleiben.

Java:
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.*;

public class JListTest {
	public static JFrame fenster;
	public static JPanel listeFrame;
	public static String fileArray[];
	public static JList liste;
	public static String ordnerPfad = "C:\\"; // Initialisierung zum starten

	public static void main(String[] args) throws Exception {

		// Fenster mit Layouts 
		// --------------------------------------------------------------
		fenster = new JFrame();
		fenster.setLayout(new GridLayout(1, 2));

		// erstes Panel mit Auswahl - Button
		//---------------------------------------------------------------
		JPanel auswahlPanel = new JPanel();
		auswahlPanel.setLayout(new FlowLayout());
		auswahlPanel.add(new JLabel("Bitte Spielordner wählen"));

		// Button mit ActionListener für OrdnerAuswahl
		JButton button = new JButton("auswahl");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFileChooser fc = new JFileChooser(ordnerPfad);
				fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
				int returnVal = fc.showOpenDialog(null);
				File f;
				if (returnVal == JFileChooser.APPROVE_OPTION) {
					f = fc.getSelectedFile();
					ordnerPfad = f.getPath();

					System.out.println(ordnerPfad); // Ist zur testzwecke
				}
			}
		});

		auswahlPanel.add(button);
		// ---------------------------------------------------------------

		// zweites Panel mit Ordnerinhalt wie von oben
		// ----------------------------------------------------------------
		listeFrame = new JPanel();
		listeFrame.setLayout(new GridLayout(1, 1));

		File file = new File(ordnerPfad);
		fileArray = file.list();

		if (fileArray == null) {
			fileArray = new String[1];
			fileArray[0] = "Bitte Spiele Ordner Auswählen";
			liste = new JList(fileArray);
		} else {
			liste = new JList(fileArray);
		}

		JScrollPane pane = new JScrollPane(liste);
		listeFrame.add(pane);

		// beide Panels zum Fenster hinzufügen
		// -----------------------------------------------------------------
		fenster.add(auswahlPanel);
		fenster.add(listeFrame);

		fenster.setSize(500, 600);
		fenster.setVisible(true);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

wie kriege ich das hin das der ActionListener vom Button dem JList sagt er soll nun mit dem neuen OrderPfad darstellen?
 
Zuletzt bearbeitet:

jgh

Top Contributor
indem du in deinem ActionListener (Zeile:40) eine Methode bspw [c] refreshListe(ordnerPfad); [/c] aufrufst und diese Methode wie folgt definierst.

Und wie immer bei mir...schön ist anders^^, aber es funktioniert ;)

Java:
public static void refreshListe(String ordnerPfad) {

		listeFrame.remove(jsp);
		File newFile = new File(ordnerPfad);
		fileArray = newFile.list();
		liste = new JList(fileArray);
		jsp = new JScrollPane(liste);
		listeFrame.add(jsp);
		fenster.add(listeFrame);
		listeFrame.validate();
	}

evtl. musst du noch ein paar Überprüfungen einbauen...
 

Risdyk

Mitglied
ahh ok es wird wieder alles neu aufgebaut und dann wieder zugewiesen und dann die validate() aufgerufen

ja super jetzt läuft das

hier die endgültige Lösung für das Beispiel, falls andere auf das gleiche Problem stoßen
Java:
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.*;

public class JListTest {
	public static JFrame fenster;
	public static JPanel listeFrame;
	public static String fileArray[];
	public static JList liste;
	public static String ordnerPfad = "C:\\"; // Initialisierung zum starten
	public static JScrollPane pane;

	public static void main(String[] args) throws Exception {

		// Fenster mit Layouts 
		// --------------------------------------------------------------
		fenster = new JFrame();
		fenster.setLayout(new GridLayout(1, 2));

		// erstes Panel mit Auswahl - Button
		//---------------------------------------------------------------
		JPanel auswahlPanel = new JPanel();
		auswahlPanel.setLayout(new FlowLayout());
		auswahlPanel.add(new JLabel("Bitte Spielordner wählen"));

		// Button mit ActionListener für OrdnerAuswahl
		JButton button = new JButton("auswahl");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFileChooser fc = new JFileChooser(ordnerPfad);
				fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
				int returnVal = fc.showOpenDialog(null);
				File f;
				if (returnVal == JFileChooser.APPROVE_OPTION) {
					f = fc.getSelectedFile();
					ordnerPfad = f.getPath();

					System.out.println(ordnerPfad); // Ist zur testzwecke
					refreshListe(ordnerPfad);
				}
			}
		});

		auswahlPanel.add(button);
		// ---------------------------------------------------------------

		// zweites Panel mit Ordnerinhalt wie von oben
		// ----------------------------------------------------------------
		listeFrame = new JPanel();
		listeFrame.setLayout(new GridLayout(1, 1));

		File file = new File(ordnerPfad);
		fileArray = file.list();

		if (fileArray == null) {
			fileArray = new String[1];
			fileArray[0] = "Bitte Spiele Ordner Auswählen";
			liste = new JList(fileArray);
		} else {
			liste = new JList(fileArray);
		}
		
		pane = new JScrollPane(liste);
		listeFrame.add(pane);

		// beide Panels zum Fenster hinzufügen
		// -----------------------------------------------------------------
		fenster.add(auswahlPanel);
		fenster.add(listeFrame);

		fenster.setSize(500, 600);
		fenster.setVisible(true);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public static void refreshListe(String ordnerPfad) {
		 
        listeFrame.remove(pane);
        File newFile = new File(ordnerPfad);
        fileArray = newFile.list();
        liste = new JList(fileArray);
        pane = new JScrollPane(liste);
        listeFrame.add(pane);
        fenster.add(listeFrame);
        listeFrame.validate();
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
M Builden eines lauffähigen JAR Files AWT, Swing, JavaFX & SWT 3
C FileChooser Save-Dialog zeigt Files nicht an AWT, Swing, JavaFX & SWT 3
D Swing DICOM Files öffnen, wie? AWT, Swing, JavaFX & SWT 5
E JavaFX fxml files wechseln AWT, Swing, JavaFX & SWT 4
B Wie kann ich Greyscale Bilder aus ushort binary files erzeugen? AWT, Swing, JavaFX & SWT 8
K Erzeugen eines Jar-Files AWT, Swing, JavaFX & SWT 5
M Inhalt eines zip-Files in einem JTree darstellen AWT, Swing, JavaFX & SWT 3
B jtree mit files und ordner AWT, Swing, JavaFX & SWT 5
N JTabbedPanecards auflisten AWT, Swing, JavaFX & SWT 3
M Komponenten einer Anwendung in JTree strukturiert auflisten? AWT, Swing, JavaFX & SWT 4
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben