Also ich muss diesmal für die uni einen File Explorer basteln, mit aufwärts, abwärts, und 2 lists, eine für ordner und eine für dateien (welche im aktuell gewählten Verzeichnis liegen).
Einmal habe ich folgendes Problem:
ich Starte imo bei C:/, würde aber gerne einfach eines von allen verfügbaren laufwerken auswählen können. Gibt es da eine Möglichkeit?
Desweiteren habe ich kleine Probleme beim auwärts Button.
ich hol mir das ganze imo so und tu das DefaultListModel übre add in eine JList, File is schon gesetzt, des wird woanders immer geändert:
nun werden die Pfade aber eben so angezeigt:
C:\x\y\z
und der "\" ist das Problem. wollte das ganze bei:
C:\x
z.B. so schneiden:
War halt ersma nu zum testen, richtig muss ich das ja dann über ne schleife machen.
Aber das " \" nimmt der nicht ... '\' auch nicht.
Jemand eine Idee?
P.S: Das try catch is imo drin weil ich öfter beim wechseln in den nächsten Ordner ne Null Pointer bekomm, ich komm z.B. ohne Probleme in C:/dell oder C:/Spiele rein, in C:/Programme aber nicht.
Für welche die es Interessiert und mal drüber schaun wollen der komplette Code:
EDIT: ok das problem mit dem String hat sich jetzt erledigt, das hab ich jetzt zusammen gebastlt, musste "\\" sein.
Nur in C:/Programme komm ich immernoch nicht rein
EDIT2:: Ok nach langem rumprobieren und paar prints setzen hab ich den fehler gefunden. obwohl der ordner Programme heißt leitet er wohl auf C:/Pogramm Files. ist das generell immer so? ist mir noch nie aufgefallen. Gibt es noch mehr solcher Sonderheiten die ich einzeln bearbeiten muss?
Einmal habe ich folgendes Problem:
ich Starte imo bei C:/, würde aber gerne einfach eines von allen verfügbaren laufwerken auswählen können. Gibt es da eine Möglichkeit?
Desweiteren habe ich kleine Probleme beim auwärts Button.
ich hol mir das ganze imo so und tu das DefaultListModel übre add in eine JList, File is schon gesetzt, des wird woanders immer geändert:
Code:
public DefaultListModel leseOrdner()
{
DefaultListModel listModel=new DefaultListModel();;
try
{
File[] fileList = file.listFiles();
for(File f : fileList)
{
if(f.isDirectory())
{
listModel.addElement(f);
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
return listModel;
}
}
C:\x\y\z
und der "\" ist das Problem. wollte das ganze bei:
C:\x
z.B. so schneiden:
Code:
String newPath=file.getPath().substring(0,file.getPath().indexOf("\"));
Aber das " \" nimmt der nicht ... '\' auch nicht.
Jemand eine Idee?
P.S: Das try catch is imo drin weil ich öfter beim wechseln in den nächsten Ordner ne Null Pointer bekomm, ich komm z.B. ohne Probleme in C:/dell oder C:/Spiele rein, in C:/Programme aber nicht.
Für welche die es Interessiert und mal drüber schaun wollen der komplette Code:
Code:
package aufgaben;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
public class FileExplorer extends JFrame implements ActionListener {
private JLabel l1;
private JList list1,list2;
private JButton runter,hoch;
private JPanel p1,p2,p3;
private Border blackline;
private File file = new File("C:/");
public FileExplorer()
{
super();
this.setSize(800,800);
this.setTitle("File Explorer");
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setLayout(new GridLayout(1,3));
blackline = BorderFactory.createLineBorder(Color.black);
initp1();
initp2();
initp3();
this.add(p1, BorderLayout.WEST);
this.add(p2, BorderLayout.CENTER);
this.add(p3, BorderLayout.EAST);
this.setVisible(true);
}
public void initp1()
{
p1=new JPanel();
l1=new JLabel();
hoch=new JButton();
runter=new JButton();
p1.setLayout(new GridLayout(3,2));
l1.setText("C:/");
hoch.setText("Hoch");
runter.setText("Runter");
runter.addActionListener(this);
p1.add(runter);
p1.add(hoch);
p1.add(l1);
}
public void initp2()
{
p2=new JPanel();
p2.setBorder(blackline);
list1=new JList(this.leseOrdner());
p2.add(list1);
}
public void initp3()
{
p3=new JPanel();
p3.setBorder(blackline);
list2 = new JList(this.leseDateien());
p3.add(list2);
}
public DefaultListModel leseOrdner()
{
DefaultListModel listModel=new DefaultListModel();;
try
{
File[] fileList = file.listFiles();
for(File f : fileList)
{
if(f.isDirectory())
{
listModel.addElement(f);
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
return listModel;
}
}
public DefaultListModel leseDateien()
{
File[] fileList = file.listFiles();
DefaultListModel listModel = new DefaultListModel();
for(File f : fileList)
{
if(!f.isDirectory())
{
listModel.addElement(f);
}
}
return listModel;
}
public static void main(String[] args)
{
FileExplorer f = new FileExplorer();
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(runter))
{
file = new File(list1.getSelectedValue().toString());
list1.setModel(this.leseOrdner());
list2.setModel(this.leseDateien());
l1.setText(file.getPath());
}
else if(e.getSource().equals(hoch))
{
}
}
}
EDIT: ok das problem mit dem String hat sich jetzt erledigt, das hab ich jetzt zusammen gebastlt, musste "\\" sein.
Nur in C:/Programme komm ich immernoch nicht rein
EDIT2:: Ok nach langem rumprobieren und paar prints setzen hab ich den fehler gefunden. obwohl der ordner Programme heißt leitet er wohl auf C:/Pogramm Files. ist das generell immer so? ist mir noch nie aufgefallen. Gibt es noch mehr solcher Sonderheiten die ich einzeln bearbeiten muss?
Zuletzt bearbeitet: