Objekt Problem

tameck

Erfahrenes Mitglied
Hallo zusammen,

hab das Problem einen wer einem Oblekt zu übergeben wenn ich dies mache bekomme ich eine Endlosschleife. Könntet ihr kurz meinen Quelltext anschauen und mir sagen wie ich dieses Objekt aufrufen kann ohne das es eine Endlosschleife gibt Freu mich über eure Antworten.

Gruß Tameck

Code:
package verzeichniss;

import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class Verzeichnisssuche extends JApplet implements ActionListener{

	JLabel label01 = new JLabel("Bitte hier den auszuwerteten Pfad eingeben: ");
	JTextField tf01 = new JTextField();
	JButton button01 = new JButton("Auswerten");
	JButton button02 = new JButton("Abbrechen");
	JTextArea ta01 = new JTextArea(10,10);
	JScrollPane sp01 = new JScrollPane(ta01);
	
	private static File f;
	private static String eingabe;
	private static File[] files;
	private static int i;
	
	public void init(){
		
		setLayout(null);
		
		label01.setBounds(15,20,300,20);
		tf01.setBounds(15,45,765,20);
		button01.setBounds(260,80,100,30);
		button02.setBounds(415,80,100,30);
		sp01.setBounds(15,125,765,455);
		
		add(label01);
		add(tf01);
		add(button01);
		add(button02);
		add(sp01);
		
		button01.addActionListener(this);
		button02.addActionListener(this);
		ta01.setEnabled(false);
		
	try{
		UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		SwingUtilities.updateComponentTreeUI(this);
		}catch(Exception e1){
		System.out.println("Fehler");
		}
		setSize(800,600);
		setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e) {	
		if(button01==e.getSource()){
			
			ta01.setText("");
			eingabe = tf01.getText();

			listDir(null); // Das ist der Übergabewert. 
			
		if(button02==e.getSource()){
			System.out.println("Abbrechen");
			tf01.setText("");
			ta01.setText("");
		}
	}
}
	public void listDir(File dir) {
		f = new File(eingabe);
		File[] fileArray = f.listFiles();
		if (fileArray != null) { 
		for(int i=0;i<fileArray.length;i++){
		System.out.println("Zeige mir Array: "+fileArray[i]);
		ta01.setText(ta01.getText()+"\n"+fileArray[i]);
		if (fileArray[i].isDirectory()) {
            System.out.print(" (Ordner)\n");
            listDir(fileArray[i]);
		}
         	else {
        	 System.out.print(" (Datei)\n");
         	}
			}
		}
	}
}
 
Du machst das listFiles immer auf dem String 'eingabe', der sich nie ändert.

Korrekt wäre das ganze auf dem Parameter 'dir' zu machen und oben in der actionPerformed
Java:
listDir(new File(tf01.getText())); // Das ist der Übergabewert.
 
Hi Zeja,

hab es so ausprobiert. Es ergibt trotzdem eine Endlosschleife !
Gibt es noch eine andere möglichkeit ?

Gruß Tameck
 
Wie sieht das ganze denn nun aus?

Pack doch deinen Code endlich mal in die korrekten Java-Tags und nicht nur in Code Tags.

Noch ein Tip:
Code:
fileArray[i]

Nur einmal abrufen wäre ein wenig schneller.
 
Java:
package verzeichniss;

import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class Verzeichnisssuche extends JApplet implements ActionListener{

	JLabel label01 = new JLabel("Bitte hier den auszuwerteten Pfad eingeben: ");
	JTextField tf01 = new JTextField();
	JButton button01 = new JButton("Auswerten");
	JButton button02 = new JButton("Abbrechen");
	JTextArea ta01 = new JTextArea(10,10);
	JScrollPane sp01 = new JScrollPane(ta01);
	
	private static File f;
	private static String eingabe;
	private static File[] files;
	private static int i;
	
	public void init(){
		
		setLayout(null);
		
		label01.setBounds(15,20,300,20);
		tf01.setBounds(15,45,765,20);
		button01.setBounds(260,80,100,30);
		button02.setBounds(415,80,100,30);
		sp01.setBounds(15,125,765,455);
		
		add(label01);
		add(tf01);
		add(button01);
		add(button02);
		add(sp01);
		
		button01.addActionListener(this);
		button02.addActionListener(this);
		ta01.setEnabled(false);
		
	try{
		UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		SwingUtilities.updateComponentTreeUI(this);
		}catch(Exception e1){
		System.out.println("Fehler");
		}
		setSize(800,600);
		setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e) {	
		if(button01==e.getSource()){
			
			ta01.setText("");
			eingabe = tf01.getText();
			listDir(new File(tf01.getText()));
			
		if(button02==e.getSource()){
			System.out.println("Abbrechen");
			tf01.setText("");
			ta01.setText("");
		}
	}
}
	public void listDir(File dir) {
		f = new File(eingabe);
		File[] fileArray = f.listFiles();
		if (fileArray != null) { 
		for(int i=0;i<fileArray.length;i++){
		System.out.println("Zeige mir Array: "+fileArray[i]);
		ta01.setText(ta01.getText()+"\n"+fileArray[i]);
		if (fileArray[i].isDirectory()) {
            System.out.print(" (Ordner)\n");
            listDir(new File(tf01.getText()));
		}
         	else {
        	 System.out.print(" (Datei)\n");
         	}
			}
		}
	}
}
 
Ja du hast da ja auch immer noch einen Fehler drin. Das habe ich oben auch schon angemerkt!
 
.......

Java:
private static final String LINE_SEP = System.getProperty("line.separator");
public void listDir(File dir) {
		File[] fileArray = dir.listFiles();
		if (fileArray != null) { 
		for(int i=0;i<fileArray.length;i++){
                    File current = fileArray[i];
		System.out.println("Zeige mir Array: "+current);
		ta01.setText(ta01.getText()+LINE_SEP+current);
		if (current.isDirectory()) {
            System.out.println(" (Ordner)");
            listDir(current);
		}
         	else {
        	 System.out.println(" (Datei)");
         	}
			}
		}
	}
 
Zurück