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");
         	}
			}
		}
	}
}
 

zeja

Erfahrenes Mitglied
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.
 

tameck

Erfahrenes Mitglied
Hi Zeja,

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

Gruß Tameck
 

zeja

Erfahrenes Mitglied
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.
 

tameck

Erfahrenes Mitglied
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");
         	}
			}
		}
	}
}
 

zeja

Erfahrenes Mitglied
Ja du hast da ja auch immer noch einen Fehler drin. Das habe ich oben auch schon angemerkt!
 

zeja

Erfahrenes Mitglied
.......

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)");
         	}
			}
		}
	}
 

Neue Beiträge