Combobox mit Laufwerksbuchstaben

Status
Nicht offen für weitere Antworten.

rodgerwilco

Mitglied
Hallo,

ich hätte da mal ien kleine Frage, da ich mit Dateibearbeitung unter Java bisher nicht viel zu tun hatte. Es geht um folgendes. Ich möchte eine Dateiauswahl programmieren. Das ganze soll graphisch sein. Der Standard-Dialog wie er zum Laden/Speichern benutzt wird bietet leider nicht die Funktionatität, die ich benötige. Ich hätte gerne un der linken Fensterhälfte ein Feld, was pro Zeile einen Eintrag mit kompletten Pfad + Dateiname hat. Auf der rechten Seite sollte ein kleines Menü sein, in dem ich Festplatte, Verzeichnis und Datei auswählen kann. Dazwischen wären zwei Buttons schön, mit denen ich Elemente in das linke Fenster einfügen bzw. löschen kann. Un dann sollte das ganze noch einen Button haben, der die Namen der ausgewählten Dateien zurück liefert. Welche Objekte müsste ich verwenden, um so etwas zu realisieren? Gibt es dafür vlllt schon fertige Lösungen?

Mein Problem ist vor allem, dass ich die Laufwerksbuchstaben nicht auslesen und in die Combobox eintragen kann. Unter Visual Basic gibt es extra GUI-Objekte, die Laufwerke anzeigen oder auch Verzeichnisse.

Gruß und Danke im Voraus
rodgerwilco
 

rodgerwilco

Mitglied
Kann mir denn keiner weiterhelfen?

Bin jetzt soweit, dass ich folgenden Code habe:

Code:
public static void main(String[] args){
		FileSystemView view = FileSystemView.getFileSystemView();
		for ( File f : File.listRoots() ){
			System.out.println( view.getSystemDisplayName(f) );
		}
}

Auf einem Windows-System konnte ich es bisher noch nicht testen, aber es könnte funktionieren...jedenfalls könnte ich mir das aus der Ausgabe unter Linux vorstellen.

Gruß
rodgerwilco
 
S

sag ich nicht

Gast
das würde mich auch interessieren! Vor allem unter Windows. Aber nicht nur die Laufwerks- sondern auch die CD\DVD sowie externen Datenträger- und die USB-Buchstaben
 

semi

Top Contributor
Ich lasse mal das hier unkommentiert drin, vielleicht bringt es dich auf paar Ideen. :wink:
Code:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileFilter;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.filechooser.FileSystemView;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

public class DirectoryTree extends JTree
{
   private static final long serialVersionUID = -9076626433161848703L;

   public DirectoryTree()
   {
      DefaultMutableTreeNode root = new DefaultMutableTreeNode("Computer");
      DefaultMutableTreeNode node;
      for (File f : File.listRoots())
      {
         node = new DefaultMutableTreeNode(new FileNode(f));
         node.add(new DefaultMutableTreeNode(Boolean.TRUE));
         root.add(node);
      }
      setModel(new DefaultTreeModel(root));
      setCellRenderer(new DirTreeRenderer());
      addTreeExpansionListener(new DirExpansionListener());
      getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
      setShowsRootHandles(true);
      setEditable(false);
   }
   
   private DefaultMutableTreeNode getTreeNode(TreePath path)
   {
      return (DefaultMutableTreeNode) (path.getLastPathComponent());
   }
   
   private FileNode getFileNode(DefaultMutableTreeNode node)
   {
      if (node == null)
         return null;
      Object obj = node.getUserObject();
      if (obj instanceof FileNode)
         return (FileNode) obj;
      return null;
   }
   
   private class DirTreeRenderer extends DefaultTreeCellRenderer implements TreeCellRenderer
   {
      private static final long serialVersionUID = 1L;

      public DirTreeRenderer()
      {
         super();
         setOpaque(false);
      }

      public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, 
            boolean leaf, int row, boolean hasFocus)
      {
         DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
         Object obj = node.getUserObject();
         if(obj instanceof Boolean)
         {
            return super.getTreeCellRendererComponent(tree, "Lese Verzeichnis...", sel, expanded, leaf, 
                  row, hasFocus);
         }
         super.getTreeCellRendererComponent(tree, obj.toString(), sel, expanded, leaf, row, hasFocus);
         if(obj instanceof FileNode)
         {
            setIcon(FileSystemView.getFileSystemView().getSystemIcon(((FileNode)obj).getFile()));
         }
         return this;
      }
   }
   
   private class DirExpansionListener implements TreeExpansionListener
   {
      public void treeExpanded(TreeExpansionEvent event)
      {
         final DefaultMutableTreeNode node = getTreeNode(event.getPath());
         final FileNode fileNode = getFileNode(node);

         Thread runner = new Thread()
         {
            public void run()
            {
               if (fileNode != null && fileNode.expand(node))
               {
                  Runnable runnable = new Runnable()
                  {
                     public void run()
                     {
                        ((DefaultTreeModel)getModel()).reload(node);
                     }
                  };
                  SwingUtilities.invokeLater(runnable);
               }
            }
         };
         runner.start();
      }

      public void treeCollapsed(TreeExpansionEvent event)
      {
      }
   }
   
   private class FileNode implements Comparable<FileNode>
   {
      private File file;
      
      public FileNode(File file)
      {
         this.file = file;
      }
      
      public boolean expand(DefaultMutableTreeNode parent)
      {
         DefaultMutableTreeNode top = (DefaultMutableTreeNode) parent.getFirstChild();
         if (top == null || !(top.getUserObject() instanceof Boolean))
         {
            return false;
         }
         parent.removeAllChildren();

         File[] dirs = listDirectories();
         List<FileNode> nodeList = new ArrayList<FileNode>(dirs.length);
         for (File f : dirs)
         {
            nodeList.add(new FileNode(f));
         }
         Collections.sort(nodeList);
         
         for(FileNode fileNode : nodeList)
         {
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(fileNode);
            parent.add(node);

            if (fileNode.hasSubDirs())
               node.add(new DefaultMutableTreeNode(Boolean.TRUE));
         }
         return true;
      }
      
      public File getFile()
      {
         return file;
      }
      
      public File[] listDirectories()
      {
         File dirs[] = file.listFiles(new FileFilter() {
            public boolean accept(File file)
            {
               return file.canRead() && file.isDirectory() && !file.isHidden();
            }
         });
         return dirs != null ? dirs : new File[0];
      }

      public boolean hasSubDirs()
      {
         return listDirectories().length > 0;
      }
      
      public int compareTo(FileNode node)
      {
         return Collator.getInstance(Locale.GERMANY).compare(file.getName(), node.getFile().getName()); 
      }
      
      public String toString()
      {
         return file.getName().length() > 0 ? file.getName() : file.getPath();
      }
   }
   
   public static void main(String[] args) throws Exception
   {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      final JFrame frame = new JFrame();
      frame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e)
         {
            frame.setVisible(false);
            System.exit(0);
         }
      });
      frame.add(new JScrollPane(new DirectoryTree()));
      frame.setSize(300, 300);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
T Combobox mit Autocomplete-Funktion AWT, Swing, JavaFX & SWT 7
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
Doppel JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
P JavaFX ClassCastException bei ComboBox.getValue AWT, Swing, JavaFX & SWT 4
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
L JavaFX Wiederspenstige ComboBox AWT, Swing, JavaFX & SWT 0
P Combobox und Enum AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Combobox, Textfield & setOnMouseClicked AWT, Swing, JavaFX & SWT 2
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
D JavaFX ComboBox String setzen AWT, Swing, JavaFX & SWT 20
offi Combobox in TableCell AWT, Swing, JavaFX & SWT 1
D Javafx Combobox Abfrage aus mysql AWT, Swing, JavaFX & SWT 8
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
L ComboBox: slider positionieren AWT, Swing, JavaFX & SWT 0
M JavaFX ComboBox: Update zur Laufzeit AWT, Swing, JavaFX & SWT 16
M JavaFX Combobox bindBidirectional AWT, Swing, JavaFX & SWT 4
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
H Combobox aktualisieren AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
M JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
J ComboBox als Filter benutzen AWT, Swing, JavaFX & SWT 1
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
G Dynamische ComboBox AWT, Swing, JavaFX & SWT 3
U Combobox mit individuellen Texten AWT, Swing, JavaFX & SWT 5
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
C Beschriftungen von Tabellenspalten mit Combobox aussuchen AWT, Swing, JavaFX & SWT 2
G JavaFX ComboBox .getItems().add() Problem AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
W Swing Combobox Abhängigkeit AWT, Swing, JavaFX & SWT 1
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI AWT, Swing, JavaFX & SWT 7
S Combobox aktualisieren AWT, Swing, JavaFX & SWT 3
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
J Swing Drive-ComboBox AWT, Swing, JavaFX & SWT 7
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
L Swing Model für ComboBox AWT, Swing, JavaFX & SWT 14
H Combobox in einer einzelnen Zelle der Jtable AWT, Swing, JavaFX & SWT 2
T Java Combobox Problem AWT, Swing, JavaFX & SWT 3
C SWT Combobox mit Textdatei füllen AWT, Swing, JavaFX & SWT 2
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
R Datenbanktabellen in Combobox AWT, Swing, JavaFX & SWT 3
C Combobox bei Tabellenänderung mit aktualisieren AWT, Swing, JavaFX & SWT 11
1 CellEditor mit ComboBox richtig beenden AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
E Swing CellEditor mit Combobox durch Tastatureingabe editieren?! AWT, Swing, JavaFX & SWT 3
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
P Swing ComboBox(en) in JTable auslesen und ausgeben AWT, Swing, JavaFX & SWT 11
M Index von Combobox AWT, Swing, JavaFX & SWT 20
L ComboBox in Action AWT, Swing, JavaFX & SWT 4
D ComboBox & CellListRenderer AWT, Swing, JavaFX & SWT 6
D ComboBox-Model mit Observer AWT, Swing, JavaFX & SWT 3
B Taschenrechner mit ComboBox AWT, Swing, JavaFX & SWT 7
T ComboBox auslesen AWT, Swing, JavaFX & SWT 11
P Combobox liesst falschen Wert AWT, Swing, JavaFX & SWT 10
C Combobox im JFrame aus Datenbank befüllen AWT, Swing, JavaFX & SWT 6
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
M Swing ComboBox ein SelectedItem übergeben/anzeigen AWT, Swing, JavaFX & SWT 7
J Werte aus Combobox speichern AWT, Swing, JavaFX & SWT 3
J Combobox als Filterkriterium (Gruppierung) in JTable AWT, Swing, JavaFX & SWT 7
R Swing ComboBox und doppelter Event!? AWT, Swing, JavaFX & SWT 10
M SWT Wie Textfeld hinzufügen, nach Auswahl von einem bestimmten Combobox-item? AWT, Swing, JavaFX & SWT 3
M SWT ComboBox mit DB-Inhalten Designfrage AWT, Swing, JavaFX & SWT 5
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
W Combobox mit eingabefeld AWT, Swing, JavaFX & SWT 7
T Editable ComboBox / kein Weiterspringen AWT, Swing, JavaFX & SWT 12
M Combobox in JTable AWT, Swing, JavaFX & SWT 4
S Swing ComboBox aus Array befüllen AWT, Swing, JavaFX & SWT 2
K Per ComboBox Dateien einlesen AWT, Swing, JavaFX & SWT 23
0 Hintergundfarbe von editierbarer ComboBox ändern AWT, Swing, JavaFX & SWT 2
M Frage zu ComboBox AWT, Swing, JavaFX & SWT 7
O Bitte um Hilfe bei ComboBox in TableHeader AWT, Swing, JavaFX & SWT 9
A NetBeans und ComboBox AWT, Swing, JavaFX & SWT 2
SuperSeppel13 Combobox zur Farbwahl kollidiert mit NimbusLookAndFeel AWT, Swing, JavaFX & SWT 7
D ComboBox(Model) mit dummyItem AWT, Swing, JavaFX & SWT 10
D Inhalt von Textfield nach ComboBox AWT, Swing, JavaFX & SWT 2
GilbertGrape nochmal editierbare Combobox AWT, Swing, JavaFX & SWT 3
GilbertGrape JTable mit Combobox-Editierung schon nach einem Klick AWT, Swing, JavaFX & SWT 7
E Swing Button ActionListener Infos aus Textfield und ComboBox AWT, Swing, JavaFX & SWT 3
G ComboBox wird nicht angezeigt beim anhängen an eine Gruppe AWT, Swing, JavaFX & SWT 2
G Combobox Event AWT, Swing, JavaFX & SWT 4
G ComboBox aktualisieren AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben