Ordner öffnen (eigener Dateibrowser)

Benny_1995

Mitglied
Hi Leute,

Hab mal wieder ein Problem würde mich freuen wenn ihr helfen könntet.

Quelltext:
Java:
[...]
final JPanel center= new JPanel();

String Pfad = "C:/";

//--->
		    
File dir = new File(Pfad);           
final File[] fileList = dir.listFiles();
final String[] pfadliste = new String[fileList.length];           
for(g = 0; g < fileList.length; g++){
        pfadliste[g] = fileList[g].getPath().replace("\\", "/"); 
}

String [] DateiListe = dir.list();
JLabel[] bla = new JLabel[DateiListe.length];
for(e =0;e<bla.length;e++){

        bla[e] = new JLabel(DateiListe[e]);
        bla[e].setName(pfadliste[e]);
	center.add(bla[e]);

//Ordner oeffnen
		    	
	 if(bla[e].getText().contains("*")==false){
		  bla[e].addMouseListener(new MouseAdapter(){
			      public void mouseClicked(MouseEvent e){
					    			
					  JLabel source =(JLabel) e.getSource();
					            Pfad = source.getName();
					            if(Pfad.equals(source.getName())){
					            		for(int a=0;a<bla.length;a++){
					            			
					            			center.remove(bla[a]);

					            			//Hier weiß ich nicht mehr weiter!

					            		}
                                                                center.repaint();
					            }
					    }
		 });
	 }
}

Ich will Folgendes erreichen:
Wenn ich auf ein Ordner klicke, dann wird ja der String "Pfad" zu dem Dateipfad des Ordners und alle JLabels werden entfernt z.B.:
Ich klicke auf das JLabel mit dem Text "Windows",dann wird der String "Pfad" zu "C:/Windows".Danach werden alle JLabels entfernt.
Jetzt soll sich das ganze wiederholen ab dem "//--->" im Quellcode. damit sich das Verzeichnis "C:/Windows" öffnet. Nur wie bringe ich das zustande?

Schon mal danke für eure Antworten :)
 

Michael...

Top Contributor
Was spricht gegen den JFileChooser?
Und wenn schon was "eigenes" warum nicht JList statt der vielen JLabels?
Eventuell ist auch JTree interessant?
Mit den JLabels hast Du ja eine ständig neue Zusammensetzung des GUIs.

Prinzipiell ist es recht simpel:
Code:
Verzeichnis auslesen
Inhalte darstellen
--> Mouseclick
     auf Verzeichnis?
         Verzeichnis auslesen
         Inhalte darstellen
         --> Mouseclick
         usw
 

Suinos

Bekanntes Mitglied
Stelle die ganze Logik für die Darstellung in eine Methode, welche ein
Code:
File
als Parameter hat.
Die Label kannst du dann über diese Methode beschriften.

In deinem Listener musst du dann nur noch die Datei bestimmen und damit die Methode aufrufen.

---

Übrigens:

  • Variablen schreibt man in
    Code:
    camelCase
  • Die Iteratorvariable kannst du direkt in der Schleife definieren, dann meistens mit dem Namen
    Code:
    i
  • Variablennamen sollten zum Verständnis des Codes beitragen ->
    Code:
    JLabel[] bla
    :/
  • Eine Prüfung auf
    Code:
    boolean == false
    kannst du ersetzen durch
    Code:
    !boolean
 

Benny_1995

Mitglied
@Suinos:
Wenn ich dich richtig verstehe soll ich in meinem Listener eine Rekursion der Methode schreiben.
Dies habe ich probiert und leider funktioniert es nicht.
Schaue bitte nochmal drüber vielleicht findest du ja einen Fehler:

Hier mein Dateienbrowser:
Java:
public class Dateienbrowser  {

	public static int g;
        public static int e;
   	public static File dir;
   	public static File[] fileList;
   	public static JLabel [] labelliste;
   	public static String[] DateiListe;
   	String Pfad = "C:/";
   	public static String[] pfadliste;
   	public static JPanel center;
   	
   	public void oeffnen(){		
		center= new JPanel();
		center.setBackground(new Color(150,200,250));		    
		    dir = new File(Pfad);           
            fileList = dir.listFiles();
	        pfadliste = new String[fileList.length];           
	        for(g = 0; g < fileList.length; g++){
	            pfadliste[g] = fileList[g].getPath().replace("\\", "/"); 
	            }	
	    DateiListe = dir.list();
	    labelliste = new JLabel[DateiListe.length];
        for(e =0;e<labelliste.length;e++){

        	labelliste[e] = new JLabel(DateiListe[e]);
        	labelliste[e].setName(pfadliste[e]);
        	labelliste[e].setForeground(new Color(0,0,0));
					
					center.add(labelliste[e]);

//Ordner		    	
    if(labelliste[e].getText().contains("*")==false&fileList[e].isDirectory()==true){
				 labelliste[e].addMouseListener(new MouseAdapter(){
					    public void mouseClicked(MouseEvent e){		
					            JLabel source =(JLabel) e.getSource();
					            		for(int a=0;a<labelliste.length;a++){
					            			
					            			center.remove(labelliste[a]);
					            	    }
					            		center.repaint();
                                                                Pfad = source.getName();
					            		oeffnen();
					            		
                       	   }
		    });
	      }


        }
     }
}


Wenn ich das Programm starte und auf einen Ordner klicke dann werden alle JLabels entfernt aber es werden keine neuen hinzugefügt wie es sein sollte.
Was habe ich falsch gemacht?
 

Michael...

Top Contributor
Das hat mit Rekursion nichts zu tun, Du sollst einfach die "erzeugende" Methode beim Mouseclick aufrufen.
Wenn Du zur Laufzeit Änderungen an der GUI vornimmst reicht ein repaint() nicht aus --> validate();

Muss aber trotzdem nochmal fragen: Warum verwendest Du keine JList? Die verwendet auch ein JLabel um den Inhalt darzustellen und ist viel flexibler - und das Vorgehen ist sauberer.
 

Benny_1995

Mitglied
@ Michael...:
1.Ich verstehe nicht ganz wie ich die Methode einfach in einem Listener aufrufen soll.
Kannst du mir vielleicht ein Beispiel geben?
Meinst du vielleicht einfach:
Java:
Dateienbrowser obj = new Dateienbrowser();
obj.oeffnen();

2. Ich benutze JList nicht weil ich es eben selbst schreiben will :D (hat eigentlich keinen Grund)
 

Michael...

Top Contributor
1.Ich verstehe nicht ganz wie ich die Methode einfach in einem Listener aufrufen soll. Kannst du mir vielleicht ein Beispiel geben?
Du verwendest doch schon einen MouseListener?
2. Ich benutze JList nicht weil ich es eben selbst schreiben will :D (hat eigentlich keinen Grund)
Tja wollen und können sind halt zwei Paar Stiefel ;-) Ne im Ernst, es hat schon seine Gründe warum ich Dir eine JList empfehle, statt eine wechselnde Anzahl an JLabels zu verwenden:
- die GUI muss nicht andauernd neu aufgebaut werden
- sie liefert Methoden um relativ einfach den angeklickten Eintrag zu ermitteln
- sie ist allgemein flexibler und resourcenschonender als Dein Vorhaben

Man kann auch mit einer JList was "eigenes" schreiben. Und ich würde mal behaupten, dass jeder Programmierer der mit Swing arbeitet und sowas "eigenes" schreiben will die JList als Basis hernehmen würde. Da die JList grundsätzlich nichts anderes ist als mehrere untereinander gezeichnete Abbildungen eines JLabels, lässt Sie sich relativ gut konfigurieren.
 

Benny_1995

Mitglied
Okay gut ich werde mich mal in JList einlesen und es ausprobieren.
Aber ich jetzt immernoch nicht wie ich eine Klasse nochmal aufruf bzw. wie du das meinst.(Sorry wenn das für dich selbstverständlich ist, aber ich bin halt noch Anfänger :oops: )
Könntest du mir vielleicht einen Beispielcode schreiben?
 

Michael...

Top Contributor
Ich meine nicht Klasse aufrufen, sondern eine Methode aufrufen, welche die GUI neu aufbaut/ manipuliert oder sonst was macht.
Java:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
public class LabelClickDemo extends JFrame {
	
	private JLabel label;
	private int clicksCount = 0;
	
	public LabelClickDemo () {
		label = new JLabel("Click me", JLabel.CENTER);
		this.getContentPane().add(label);
		label.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent evt) {
				eineTolleMethodeDieManAufrufenKann();
			}
		});
	}
	
	public void eineTolleMethodeDieManAufrufenKann() {
		label.setText("You did " + ++clicksCount + " clicks");
	}
	
	public static void main(String[] args) {
		JFrame frame = new LabelClickDemo();
		frame.setBounds(0, 0, 200, 200);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MR._FIRE_Flower Ordner im Explorer öffnen lassen Java Basics - Anfänger-Themen 2
R jar läßt sich nur im Original Ordner öffnen Java Basics - Anfänger-Themen 3
T Mit Runtime unter Windows einen Ordner öffnen Java Basics - Anfänger-Themen 2
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
E Javamail Gesendet ordner Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
T src Ordner ausführen Java Basics - Anfänger-Themen 9
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
J Eclipse Einrichten : Umzug in anderen Ordner Java Basics - Anfänger-Themen 2
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
F Zeile in Ordner Java Basics - Anfänger-Themen 4
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
das_leon Auf Ordner zugreifen (Vollzugriff) Java Basics - Anfänger-Themen 2
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
L Ordner Zippen Java Basics - Anfänger-Themen 2
L Ordner zusammenlegen Java Basics - Anfänger-Themen 3
J Java Ordner Erstellung nicht möglich. Java Basics - Anfänger-Themen 3
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
M Erste Schritte Ordner im selber Verzeichnis wählen Java Basics - Anfänger-Themen 1
D Input/Output Ordner aus .Jar in das Verzeichnis der .Jar kopieren Java Basics - Anfänger-Themen 1
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
agent47 Input/Output Ordner/Datei Rekutrsiv erstellen und Java Basics - Anfänger-Themen 8
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
D Ordner der Ausgeführten Datei erhalten Java Basics - Anfänger-Themen 4
P newbie- Frage zu Ordner-Projektstruktur Java Basics - Anfänger-Themen 3
L Herunterladbares Java Programm in bestimmten Ordner speicher Java Basics - Anfänger-Themen 3
M Input/Output Ordner erstelen? Java Basics - Anfänger-Themen 12
A Ordner zippen Java Basics - Anfänger-Themen 10
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
D Ordner auf Desktop erstellen(Pc unabhängig) Java Basics - Anfänger-Themen 3
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
I Ordner schnell durchlesen Java Basics - Anfänger-Themen 11
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
I Datei schreiben, im Klassen-Ordner Java Basics - Anfänger-Themen 15
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
V bin und src Ordner Java Basics - Anfänger-Themen 3
M JFS- Ordner von faces-config.xml Java Basics - Anfänger-Themen 2
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
C src-Ordner in jar-Datei (Eclipse) Java Basics - Anfänger-Themen 4
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
B Ordner leeren/löschen Java Basics - Anfänger-Themen 5
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
X Wieso mehrere JRE ordner? Java Basics - Anfänger-Themen 8
N Kein Zugriff auf Ordner -> NullPointerException Java Basics - Anfänger-Themen 2
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
D Compiler-Fehler Klasse wird im selben Ordner nicht gefunden Java Basics - Anfänger-Themen 5
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
S Bearbeiting von xml-Datei in src-Ordner möglich?i Java Basics - Anfänger-Themen 5
B res-Ordner für Text- und Bilddateien Java Basics - Anfänger-Themen 23
B Ordner in jar dateien einfügen Java Basics - Anfänger-Themen 4
M Java Eclipse IDE erstellt keinen Bin Ordner. Java Basics - Anfänger-Themen 10
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
V Ressourcen aus Ordner nutzen Java Basics - Anfänger-Themen 5
W Ordner "auslesen" Java Basics - Anfänger-Themen 18
R Aus jar Ordner lesen Java Basics - Anfänger-Themen 27
F Auf Ordner im selben Verzeichniss zugreifen Java Basics - Anfänger-Themen 3
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
S Ordner / Package Struktur bei größerem Projekt? Java Basics - Anfänger-Themen 8
O Erste Schritte Runnable Jar <- Ordner Fehlen Java Basics - Anfänger-Themen 6
D höchster ordner in zip datei Java Basics - Anfänger-Themen 14
J Ordner und Unterordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 7
M Dateipfad: einen Ordner "hoch" Java Basics - Anfänger-Themen 11
M Input/Output Namen der Files aus einem Ordner MIT bestimmten Encoding auslesen? Java Basics - Anfänger-Themen 3
L Größe von Ordner wiedergeben Java Basics - Anfänger-Themen 4
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
V .cab Dateien im Win Profil Ordner? Java Basics - Anfänger-Themen 5
eLogic Ordner kopieren/schreiben Java Basics - Anfänger-Themen 2
D Ordner in Eclipse Importieren Java Basics - Anfänger-Themen 6
F Ordner in JAR scannen Java Basics - Anfänger-Themen 3
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
P Kompelieren von 2 Java Dateien im selben Ordner Java Basics - Anfänger-Themen 13
V Datei in Ordner auslesen -> neuer Ordnername Java Basics - Anfänger-Themen 7
J Dateien aus Ordner auslesen bzw. einlesen Java Basics - Anfänger-Themen 4
G jar datei funktioniert nicht ohne jdom.jar im Ordner Java Basics - Anfänger-Themen 7
H Textdateien in Ordner einlesen - unendlich ? Java Basics - Anfänger-Themen 8
B Datei in mehrere Ordner splitten und wieder zusammenfuegen... Java Basics - Anfänger-Themen 3
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
StrikeTom Wie ermittel ich alle dateinamen in einem Ordner Java Basics - Anfänger-Themen 2
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
S Betriebssystem - Ordner erstellen auf Windows & Linux Java Basics - Anfänger-Themen 3
BleedingSt4r Ordner + Unterordner "auslesen" ? Java Basics - Anfänger-Themen 32
S Ordner erstellen Problem Java Basics - Anfänger-Themen 4
S Ordner umbenennen mit renameTo - mysteriöses Problem Java Basics - Anfänger-Themen 9
T alle Ordner in einem Ordner in JList anzeigen Java Basics - Anfänger-Themen 3
M Ordner Download Java Basics - Anfänger-Themen 11
Developer_X Zugriff auf PC verweigert bei Ordner erstellung, wie zulassen?! Java Basics - Anfänger-Themen 3
Developer_X Java File listet den Ordner, in dem sich die Datei befindet Java Basics - Anfänger-Themen 7
P FTP Ordner löschen Java Basics - Anfänger-Themen 5
Developer_X Java - per Java einen Ordner löschen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben