Hallo zusammen,
ich versuche gerade das mit der Objektorientierung verstehen zu lernen, aber irgendwie klappt das noch nicht so ganz und daher bräuchte ich mal wieder Eure Hilfe
Ich hab mir jetzt erstmal Tage lang den Kopf darüber zerbrochen, was ich denn so in meinen kleinen Progrämmchen überhaupt als Objekt identifizieren könnte und da ist mir dann ein "Verzeichnisläufer" eingefallen. Also etwas, dass best. Ordner incl. Unterordner nach irgendwelchen Dateien durchsucht und diese (also die Pfadangaben) in einer ArrayList speichert - für den Anfang reicht mir hier "irgendwelche Dateien" - ein Dateifilter folgt später.
Meine Frage ist jetzt, wie organisier ich das richtig. Ich hab gelernt, dass eine Klasse definiert, was ein Objekt weiß und was ein Objekt macht. Aber was weiß meine Klasse DirScan denn jetzt wirklich, welches sind ihre Instanzvariablen und welche Methoden gehören zu diesem Objekt?
Folgendes kleine Beispiel-Programm hab ich mal zusammengebastelt:
Klasse DirScan_Test
Klasse Gui
Klasse DirScan
Es funktioniert, es tut was es soll - aber wie ist das nu mit der Objektorientierung? Was hab ich falsch gemacht, was könnte man wie verbessern?
Helft mir, damit ich es mal wirklich verstehen lerne!
Danke und Grüße,
muemmel
ich versuche gerade das mit der Objektorientierung verstehen zu lernen, aber irgendwie klappt das noch nicht so ganz und daher bräuchte ich mal wieder Eure Hilfe
Ich hab mir jetzt erstmal Tage lang den Kopf darüber zerbrochen, was ich denn so in meinen kleinen Progrämmchen überhaupt als Objekt identifizieren könnte und da ist mir dann ein "Verzeichnisläufer" eingefallen. Also etwas, dass best. Ordner incl. Unterordner nach irgendwelchen Dateien durchsucht und diese (also die Pfadangaben) in einer ArrayList speichert - für den Anfang reicht mir hier "irgendwelche Dateien" - ein Dateifilter folgt später.
Meine Frage ist jetzt, wie organisier ich das richtig. Ich hab gelernt, dass eine Klasse definiert, was ein Objekt weiß und was ein Objekt macht. Aber was weiß meine Klasse DirScan denn jetzt wirklich, welches sind ihre Instanzvariablen und welche Methoden gehören zu diesem Objekt?
Folgendes kleine Beispiel-Programm hab ich mal zusammengebastelt:
Klasse DirScan_Test
Code:
package pack;
import java.awt.BorderLayout;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class DirScan_Test extends JFrame{
private static final long serialVersionUID = 1L;
JTabbedPane tab = new JTabbedPane();
Gui g = new Gui();
DirScan_Test () {
super();
setTitle("Verzeichnis Scanner");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initLaF();
setLayout(new BorderLayout());
tab.setFont(new Font("Verdana",Font.BOLD,11));
tab.addTab("GUI", g);
getContentPane().add(tab, BorderLayout.CENTER);
}
public void initLaF() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
SwingUtilities.updateComponentTreeUI(tab);
SwingUtilities.updateComponentTreeUI(g);
}
catch(Exception c){
}
public static void main(String[] args) {
JFrame f = new DirScan_Test();
f.setSize(500,300); // 704
f.setLocation(300,200);
f.setVisible(true);
f.setResizable(false);
}
Code:
package pack;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Gui extends JPanel{
private static final long serialVersionUID = 1L;
JCheckBox optRekursiv = new JCheckBox("incl. Unterverzeichnisse", true);
JLabel lblDir = new JLabel("Verzeichnis wählen");
JTextField txtDir = new JTextField();
JButton btnDir = new JButton("...");
JButton btnGo = new JButton("Go");
JTextArea taAusgabe = new JTextArea(7,10);
JScrollPane scrAusgabe = new JScrollPane();
Gui() {
super();
setLayout(null);
lblDir.setBounds(10,10,200,20);
lblDir.setFont(new Font("Verdana", Font.BOLD, 11));
add(lblDir);
txtDir.setBounds(10,30,350,20);
txtDir.setFont(new Font("Courier New", Font.PLAIN, 14));
add(txtDir);
btnDir.setBounds(370,30,50,20);
btnDir.setFont(new Font("Verdana", Font.BOLD, 11));
add(btnDir);
btnDir.addActionListener(new GetDir());
btnGo.setBounds(430,30,50,20);
btnGo.setFont(new Font("Verdana", Font.BOLD, 11));
add(btnGo);
btnGo.addActionListener(new StartRunDir());
scrAusgabe.setBounds(10,60,470,160);
scrAusgabe.setViewportView(taAusgabe);
add(scrAusgabe);
}
class GetDir implements ActionListener{
public void actionPerformed(ActionEvent ae) {
JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int option = fc.showOpenDialog(txtDir);
if(option == JFileChooser.APPROVE_OPTION) {
String pfad = fc.getSelectedFile().getAbsolutePath();
txtDir.setText(pfad);
}
}
}
class StartRunDir implements ActionListener{
public void actionPerformed(ActionEvent ae) {
DirScan ds = new DirScan();
ds.setPfad(txtDir.getText());
ArrayList<File> dateien = ds.runDir();
}
}
}
Code:
package pack;
import java.io.File;
import java.util.ArrayList;
public class DirScan {
private String pfad;
private ArrayList<File> dateien = new ArrayList<File>();
public void setPfad(String p) {
pfad = p;
}
String getPfad() {
return pfad;
}
ArrayList<File> runDir() {
String tmp = getPfad();
String fPfad = tmp.replaceAll("\\\\","\\\\\\\\");
File f = new File(fPfad);
ArrayList<File> al = spider(f);
return al;
}
ArrayList<File> spider(File dir) {
File[] verz = dir.listFiles();
if(verz != null) {
for(int i=0; i<verz.length; i++) {
if(verz[i].isDirectory()) {
spider(verz[i]);
}
if(verz[i].isFile()) {
dateien.add(verz[i]);
}
}
}
return dateien;
}
}
Helft mir, damit ich es mal wirklich verstehen lerne!
Danke und Grüße,
muemmel