Hallo und guten Morgen!
Ich bin ein Neuling, nicht in der Programmiersprache Java, aber hier im Forum. Das Forum das ich zuvor nutzte um es mit meinen Problemen zu füllen wurde von einer Sekunde zur nächsten geschlossen, daher habe ich den Weg in diese Community eingeschlagen. Ich hoffe das ich bei Euch genauso gut Hilfe bekomme wie anders wo.
Und schon komme ich zu meinem ersten Problem:
Ich habe mir einen JTree erstellt der den Inhalt des aktuellen Arbeitsverzeichnisses anzeigt. Da nur bestimmte Dateien angezeigt werden sollen habe ich noch einen Dateifilter eingebaut der Dateien an Hand von Dateiendungen filtert.
Der JTree läuft so wie ich es mir vorgestellt habe, allerdings schreit mich der Kompiler beim kompilieren mit zwei Warnungen an.
Note: ownJTree.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Ich habe mich im Netz über die Warnungen schlau gemacht und auch was gefunden was vielversprechend war, allerdings konnte ich die Warnungen nicht beseitigen.
In Zeile 50 verwende ich „Vector“ und ich vermute das es damit was zu tun hat, ich habe dem Vector über die Eingabe „new Vector()“ mitgeteilt das dieser nur Objekte der Klasse „ownDefaultMutableTreeNode“ aufnehmen soll. Aber das hat nichts gebracht.
Vielleicht kann mir jemand weiterhelfen, hier mal mein Code.
import java.awt.*;
import java.io.File;
import java.io.FileFilter;
import java.util.Vector;
import javax.swing.*;
import javax.swing.JScrollPane;
import javax.swing.tree.TreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
public class ownJTree extends JFrame
{
public static void main(String [] arg)
{
new ownJTree().setVisible(true);
}
public ownJTree()
{
super("JTree Beispiel");
this.setLocationRelativeTo(null);
this.setSize(new Dimension(300,300));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTree tree = new JTree( new ownDefaultMutableTreeNode(
new File(System.getProperty("user.dir")))
);
this.add(new JScrollPane(tree), BorderLayout.CENTER);
}
}
class ownDefaultMutableTreeNode extends DefaultMutableTreeNode
{
private File file;
public ownDefaultMutableTreeNode(File f)
{
setfile(f);
setChildren(f);
}
private void setfile(File f)
{
file = f;
}
private void setChildren(File F)
{
if(file.listFiles() != null)
{
children = new Vector();
for(File f : file.listFiles(new ownFileExtensionFilter()))
{
children.add(new ownDefaultMutableTreeNode(f));
}
}
}
private String getName()
{
return file.getName();
}
public boolean isLeaf()
{
return !file.isDirectory();
}
@Override
public String toString()
{
return getName();
}
}
class ownFileExtensionFilter implements FileFilter
{
private String[] extList = {"java","c","cpp","cxx","h","bat","sh"};
public boolean accept( File f )
{
return f.isDirectory() || compareExtension(f);
}
private boolean compareExtension(File f)
{
char[] filename = f.getName().toCharArray();
String tempString = "";
int i = filename.length-1;
while(filename** != '.')
{
if(i == 0) break;
tempString = tempString + filename**;
i--;
}
String extension = new StringBuffer(tempString).reverse().toString();
for(int j = 0; j < extList.length; j++)
{
if(extension.equals(extList[j])) return true;
}
return false;
}
}
Solltet Ihr noch Verbesserungsvorschläge für meine Klassen oder dem Code allgemein haben, dann immer raus damit.