tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
593
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    I2oxxi I2oxxi ist offline Mitglied
    Registriert seit
    Dec 2011
    Beiträge
    20
    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:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
        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;
            }
     
        }
    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:
    Code :
    1
    
    String newPath=file.getPath().substring(0,file.getPath().indexOf("\"));
    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:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    
    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?
    Geändert von I2oxxi (25.01.12 um 20:32 Uhr)
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Normalerweise ja. Es gibt noch einige Ordner, die dir vom Windows Explorer anders benannt werden, als sie auf der Festplatte heißen. Der Müll zum Beispiel, außerdem solche speziellen Ordner wie $MFT.
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    java123 java123 ist offline Mitglied Bronze
    Registriert seit
    Jun 2009
    Beiträge
    37
    Zitat Zitat von I2oxxi Beitrag anzeigen
    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?
    java.io.File#listRoots() liefert dir ein Array der Rootverzeichnisse.
    Geändert von java123 (27.01.12 um 22:28 Uhr)
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    alternativ zu file.listRoots() könntest du dir mal die Klasse FileSystemView anschauen:
    http://docs.oracle.com/javase/6/docs...ystemView.html

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. Baustelle Arbeitsplatz
    Von general_failure im Forum Werkstatt
    Antworten: 1
    Letzter Beitrag: 17.08.07, 04:09
  2. link von arbeitsplatz ?
    Von btotheroots im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 02.10.05, 15:54
  3. Verdammter Arbeitsplatz
    Von timo0804 im Forum Hardware
    Antworten: 7
    Letzter Beitrag: 13.05.05, 15:31
  4. Ergonomie am Arbeitsplatz
    Von Visu1 im Forum Smalltalk
    Antworten: 4
    Letzter Beitrag: 12.10.04, 21:19
  5. Antworten: 0
    Letzter Beitrag: 31.05.02, 01:28