Mein Bäumchen

Status
Nicht offen für weitere Antworten.

dona

Mitglied
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.io.File;
import javax.swing.border.*;


public class Explorer extends Frame {
public Explorer() {

try
{
// UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception exc)
{
System.err.println("Error loading L&F: " + exc);
}

MenuBar mbar = new MenuBar();
setMenuBar(mbar);

Menu file = new Menu("File");
MenuItem item1, item2, item3, item4;

Menu subf=new Menu("New....",true);
MenuItem item11, item12;
subf.add(item11=new MenuItem("Folder"));
subf.add(item12=new MenuItem("Text Document"));
file.add(subf);

item2=new MenuItem("Open");
file.add(item2);

item3=new MenuItem("Close");
file.add(item3);

item4=new MenuItem("Quit....");
//file.add(item4 = new MenuItem("Quit...."));
file.add(item4);

mbar.add(file);

Menu edit = new Menu("Edit");
MenuItem item5,item6, item7, item8,item9;
edit.add(item5 = new MenuItem("Undo"));
edit.add(item6 = new MenuItem("Cut"));
edit.add(item7 = new MenuItem("Copy"));
edit.add(item8 = new MenuItem("Paste"));
edit.add(new MenuItem("-"));
edit.add(item9=new MenuItem("Select All"));

mbar.add(edit);

Menu view = new Menu("View");
MenuItem item20, item14, item15,item16,item17;
Menu subv=new Menu("Explorer Bar.....",true);
MenuItem item10, item13;
subv.add(item10 = new MenuItem("History"));
subv.add(item13 = new MenuItem("Folders"));
view.add(subv);
view.add(new MenuItem("-"));

view.add(item14 = new MenuItem("Large Icons"));
view.add(item15 = new MenuItem("Small Icons"));
view.add(item16 = new MenuItem("List"));
view.add(item17 = new MenuItem("Details"));
view.add(new MenuItem("-"));

Menu subv1=new Menu("Arrange icons.....",true);
MenuItem item18,item19;
subv1.add(item18=new MenuItem("by Name"));
subv1.add(item19=new MenuItem("by Type"));
view.add(subv1);
view.add(new MenuItem("-"));

view.add(item20 = new MenuItem("Refresh"));
mbar.add(view);

Menu go=new Menu("Go");
MenuItem item21,item22,item23;
go.add(item21=new MenuItem("Back"));
go.add(item22=new MenuItem("Forward"));
go.add(new MenuItem("-"));
go.add(item23=new MenuItem("My Computer"));
mbar.add(go);

Menu tools = new Menu("Tools");
MenuItem item24;
tools.add(item24 = new MenuItem("Find(files/folders)"));
mbar.add(tools);

Menu help = new Menu("Help");
MenuItem item25,item26;
help.add(item25 = new MenuItem("Help Topic"));
mbar.add(help);

MyMenuHandler handler = new MyMenuHandler(this);

//item1.addActionListener(handler);
item2.addActionListener(handler);
item3.addActionListener(handler);
item4.addActionListener(handler);
item5.addActionListener(handler);
item6.addActionListener(handler);
item7.addActionListener(handler);
item8.addActionListener(handler);
item9.addActionListener(handler);
item10.addActionListener(handler);
item11.addActionListener(handler);
item12.addActionListener(handler);
item13.addActionListener(handler);
item14.addActionListener(handler);
item15.addActionListener(handler);
item16.addActionListener(handler);
item17.addActionListener(handler);
item18.addActionListener(handler);
item19.addActionListener(handler);
item20.addActionListener(handler);


final JTree tree = new JTree(createTreeModel());
JScrollPane scrollPane = new JScrollPane(tree);
FileNodeRenderer renderer = new FileNodeRenderer();
AbstractBorder border=new EtchedBorder();

tree.setEditable(true);
tree.setCellRenderer(renderer);

// getContentPane().add(scrollPane, BorderLayout.CENTER);

setLayout(new GridLayout(1, 2));
JPanel contentPane=new JPanel();
add(contentPane);
contentPane.setBorder(border);
contentPane.setLayout(new BorderLayout());
contentPane.add(scrollPane, BorderLayout.CENTER);
JPanel contentPane1=new JPanel();
add(contentPane1);
contentPane1.setBorder(border);

MyWindowAdapter adapter = new MyWindowAdapter(this);
addWindowListener(adapter);


tree.addTreeExpansionListener(new TreeExpansionListener(){
public void treeCollapsed(TreeExpansionEvent e) {
}
public void treeExpanded(TreeExpansionEvent e) {
TreePath path = e.getPath();
FileNode node = (FileNode)
path.getLastPathComponent();

if( ! node.isExplored()) {
DefaultTreeModel model = 
(DefaultTreeModel)tree.getModel();

node.explore();
model.nodeStructureChanged(node);
}
}
});
}
private DefaultTreeModel createTreeModel() {
String dirname[]={"A:/..","C:/..","D:/..","E:/..","F:/..","G:/.."};

File root = new File("C:/");

FileNode rootNode = new FileNode(root), node;

rootNode.explore();

return new DefaultTreeModel(rootNode);
}
public static void main(String args[]) {
Explorer f = new Explorer();
f.setSize(new Dimension(400,360));
f.setVisible(true);

/* GJApp.launch(new Explorer(),"JTree File Explorer",
300,300,450,400);*/
}
}

class MyWindowAdapter extends WindowAdapter
{
Explorer exp;
public MyWindowAdapter()
{
}
public MyWindowAdapter(Explorer exp)
{
this.exp = exp;
}
public void windowClosing(WindowEvent we)
{
exp.dispose();
System.exit(0);
}
}

class MyMenuHandler implements ActionListener, ItemListener
{
Explorer exp1;
public MyMenuHandler(Explorer exp1)
{
this.exp1 = exp1;
}
public void actionPerformed(ActionEvent ae)
{
}
public void itemStateChanged(ItemEvent ie)
{
}

}


class FileNode extends DefaultMutableTreeNode {
private boolean explored = false, selected = false;

public FileNode(File file) { 
setUserObject(file); 
}
public boolean getAllowsChildren() { return isDirectory(); }
public boolean isLeaf() { return !isDirectory(); }
public File getFile() { return (File)getUserObject(); }

public void explore() { explore(false); }
public boolean isExplored() { return explored; }

public void setSelected(boolean s) { selected = s; }
public boolean isSelected() { return selected; }

public boolean isDirectory() {
File file = (File)getUserObject();
return file.isDirectory();
}
public String toString() {
File file = (File)getUserObject();
String filename = file.toString();
int index = filename.lastIndexOf("\\");

return (index != -1 && index != filename.length()-1) ? 
filename.substring(index+1) : 
filename;
}
public void explore(boolean force) {
if(!isExplored() || force) {
File file = getFile();
File[] children = file.listFiles();

for(int i=0; i < children.length; ++i) 
add(new FileNode(children[i]));

explored = true;
}
}
}
class FileNodeRenderer extends DefaultTreeCellRenderer {
// protected JCheckBox checkBox = new JCheckBox("backup");
// private Component strut = Box.createHorizontalStrut(8);
private JPanel panel = new JPanel();

public FileNodeRenderer() {
panel.setBackground(
UIManager.getColor("Tree.textBackground"));

setOpaque(false);
// checkBox.setOpaque(false);
panel.setOpaque(false);

panel.setLayout(new FlowLayout(FlowLayout.CENTER,0,0));
panel.add(this);
// panel.add(strut);
// panel.add(checkBox);

} 
public Component getTreeCellRendererComponent(
JTree tree, Object value, 
boolean selected, boolean expanded,
boolean leaf, int row, 
boolean hasFocus) {
FileNode node = (FileNode)value;
String s = tree.convertValueToText(value, selected,
expanded, leaf, row, hasFocus);

super.getTreeCellRendererComponent(
tree, value, selected, expanded,
leaf, row, hasFocus);

// checkBox.setVisible(node.isDirectory());
// checkBox.setSelected(node.isSelected());

return panel;
}
}



leider wird nur C angezeigt.Kann mir jemand bitte dabei helfen das von selbst die Datenträger angezeigt werden die vorhanenden sind ?
 
R

Roar

Gast
hau das
String dirNames = {"A:\...."}
raus und setze File.listRoots(); ein.
hättest du ein bisschen in dem forum hier gesucht oder in die api geguckt hättest du's auch so rausgefunden :### :!:
 
B

Beni

Gast
Weil Du nur C:/ untersuchst!

Code:
private DefaultTreeModel createTreeModel() {
  String dirname[]={"A:/..","C:/..","D:/..","E:/..","F:/..","G:/.."};

  File root = new File("C:/");

  FileNode rootNode = new FileNode(root); //  rootNode = "C"

  rootNode.explore();  // rootNode = "C"

  return new DefaultTreeModel(rootNode);  // rootNode immer noch = "C"
}

Also:
1. File.listRoots() könnte noch nützlich sein.

2. Du musst alle Einträge in dem Array durchlaufen!

3. Schon mal was vom JFileChooser gelesen?

4. Ist keine gute Idee, wenn du den ganzen Baum im voraus zusammensetzt (mein PC hat z.B. mehr als 100'000 Dateien, das dauert ein bisschen, und benötigt recht viele Ressourcen).
Besser wäre es den Baum dynamisch zu erweitern, wenn ein Node geöffnet wird. Damit das geht kannst du recht einfach das Interface TreeNode implementieren.

5. Tutorial gefällig? hier :wink:

mfg Beni
 

dona

Mitglied
hau das
String dirNames = {"A:\...."}
raus und setze File.listRoots(); ein.

Hab das jetzt so verstanden das ich das nur austauschen sollte.Aber passierte nix dabei.Blieb alles beim alten
 
R

Roar

Gast
*handvorkopfschlag*
dann musst du den rest natürlich auch anpassen, sonst bringts jawohl nix, oder? [schild=9 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]*g*[/schild]
 

dona

Mitglied
ICh hau mir gleich auch die Hand vorm Kopf am besten ich mach heut Abend weiter.Ich schaffst nicht mals mehr sowas umzustellen.(Bins schon lange auf den Beinen)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
M Brainstorming für mein Projekt Allgemeine Java-Themen 30
R Wo ist mein Fehler in der Methode DRINGEND Allgemeine Java-Themen 9
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
T log4j2 Wo liegt mein Logfile? Allgemeine Java-Themen 3
Thallius Warum läst mein replace die Klammern drin? Allgemeine Java-Themen 10
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
K Was ist mein Fehler? Allgemeine Java-Themen 2
itwestnet Mein Java-Programm läuft nicht in China Allgemeine Java-Themen 4
Thallius App-Sprache in der App ändern. Wo ist mein Denkfehler? Allgemeine Java-Themen 6
M Mein erstes TicTacToe :-) Allgemeine Java-Themen 3
A Applet Mein Applet verursacht Browserabsturz Allgemeine Java-Themen 8
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
K Wo ist mein Fehler? Allgemeine Java-Themen 21
J Mein eigener Messenger und dessen Probleme Allgemeine Java-Themen 48
C Hilfe! Mein Java mag nich mehr ganz... Allgemeine Java-Themen 11
F VideoIntro für mein Programm Allgemeine Java-Themen 2
A Wie lasse ich mein Programm als Daemon laufen? Allgemeine Java-Themen 4
A Wie liefere ich mein Java-Programm richtig aus? Allgemeine Java-Themen 10
G Entscheidungsproblem für mein Vorhaben, zwischen Java und C# Allgemeine Java-Themen 35
G Wie kann ich in mein Programm eine Updatefunktion einbauen Allgemeine Java-Themen 3
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
V Beratung zum Bestimmen der "Mittel"(Java,Sql) mein Allgemeine Java-Themen 3
S mit welchem befehl kann ich mein programm autom. schließen Allgemeine Java-Themen 3
R Mein Applet läuft in der IDE aber nicht. Allgemeine Java-Themen 2
M Bitte Testen: Mein Multi-File Editor Allgemeine Java-Themen 30
B Fehler:Mein Applet kann nicht auf zwei txt-Dateien zugreifen Allgemeine Java-Themen 2
C Warum wartet mein thread nicht? Allgemeine Java-Themen 2
F Datei auslesen - wo ist mein Fehler? Allgemeine Java-Themen 9
T läuft mein Programm schon? - wie feststellen Allgemeine Java-Themen 6
T Warum mein such-tool schneller als Windows such-tool? Allgemeine Java-Themen 5
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
A mein Frame wird nicht schnell genung aktualisiert Allgemeine Java-Themen 7
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben