texteingabe in Fenster (JTextField)

Status
Nicht offen für weitere Antworten.

Java_Fan

Mitglied
Hallo
Ich habe ein Program geschrieben der 3 Klassen hat (eine davon ist mein main[].java ),andren sind Suchalgoritmus.java und Start.Java .
Leider bekomme ich beim Ausführen ein Fehler.
Es sollte so vogehen:

1.In Fenster (Start()) wird ein string in textField eingegeben (fileName)
2. Buttom1 wird gedruckt
Code:
button1.addActionListener(new ActionListener() {
	                public void actionPerformed(ActionEvent event) {
			String fileName =textField.getText(); 
       		         sa.setFileName(fileName); }   });
3. filename soll den suchAlgoritmus weiter gegeben werden
Code:
public class suchAlgoritmus {  
private String fileName;
public void setFileName(String fileName)
	   {
		this.fileName = fileName;
	   }
public void auslesen()throws IOException{
    ....
File file = new File(fileName);	 -> hier become ich mein Fehler  " file = null " 
 . . .
aber hier kommt das Fehler:

Exception in thread "main" java.lang.NullPointerException
at java.io.File.<init>(File.java:194)
at suchAlgoritmus.auslesen(suchAlgoritmus.java:57)
at simplifyEnglish.main(simplifyEnglish.java:31)

Hier noch Mal mein Code!
Bitte es ist mir zu kompliziert geworden (ich bin neu bei Java)!!!
Ich bedanke mich vorher!:bahnhof:

Code:
public class suchAlgoritmus {

   private String fileName;
  public void setFileName(String fileName)
	   {
		this.fileName = fileName;
	   }
public void auslesen()throws IOException{	 
    Start frame = new Start();
    FileInputStream fis = null;
   BufferedInputStream bis = null;
   DataInputStream dis = null;
   try {
	File file = new File(fileName);			
	try {
         	fis = new FileInputStream(file);
	bis = new BufferedInputStream(fis);
	dis = new DataInputStream(bis);
	String line = dis.readLine();
	         ...
Start.java ( input Fenster)

Code:
public class Start extends JFrame implements ActionListener{
	 private JTextField textField;
	 private suchAlgoritmus sa = new suchAlgoritmus();
	 public Start() {
		
	    final JTextField textField = new JTextField(20);
	    add(textField);	    
	    JButton button1 = new JButton("ausführen");
	    button1.addActionListener(this);
	    this.add(button1); 
	    button1.addActionListener(new ActionListener() {
	          public void actionPerformed(ActionEvent event) {
	   					String fileName =textField.getText(); 
	   					sa.setFileName(fileName);
	   					}
	    });
           ...
 
wer ruft wann auslesen() auf?

der Fehlermeldung nach eine main-Methode, also vielleicht bevor überhaupt jemand die Chance hat, den Button zu klicken?

bau dir doch Logging-Ausgaben ein:

System.out.println("FileName auf Wert: "+.. +" gesetzt");


System.out.println("erzeuge nun File mit FileName: "+.. );

usw.
 
stimmt, das Fehlermeldung kommt bevor ich den Knopf druken kann.Danke, für deine gute Idee für logging-Ausgaben!
trotzdem mein main[] sieht so aus:
Code:
public class simplyInput {
	
	public static void main(String[] args) throws Throwable{
		
		suchAlgoritmus objSuche = new suchAlgoritmus();
        objSuche.auslesen();
        
	}
}
soll es erst auslesen() und in der auslesen(), start() und wieder auslesen() gerufen werden oder?
 
> soll es erst auslesen() und in der auslesen(), start() und wieder auslesen() gerufen werden oder?

den Satz verstehe ich nicht, so oft ich ihn auch lese,

kann daran liegen, dass er Dinge enthält, die allgemein selten Sinn machen,
etwa dass eine Methode auslesen() sich selber aufrufen soll (Gefahr von Endlosschleife)

allgemein schlage ich vor, dass du auslesen() in dem Button startest, welcher bereits setFileName() aufruft,
oder ein neuer Button 'jetzt gehts los'
 
sorry das ich so blöd erklärt habe !!
aber vielén Dank :applaus: ! Ich habe jetzt mein Main so geändert und
Code:
public static void main(String[] args) throws Throwable{
		/
	Start objSuche = new Start();
        objSuche.Start();}

..jetzt bekomme ich mein fileName wie ich will 🙂 SUPER

Aber (sich shämen) ich weiß auf schnelle nicht wo ich mein suchAlgoritmus() [auslesen()] rufen soll damit es nach dem knopfdruck hier weiter geht:

Code:
public void auslesen()throws IOException{	 
	    
		FileInputStream fis = null;
		BufferedInputStream bis = null;
		DataInputStream dis = null;
		System.out.println("3.FileName auf Wert: "+fileName+" gesetzt"); 
		File file = new File(fileName);
			try {
				ArrayList<String> words = new ArrayList();
				words.add("Page");
				words.add("State");
				System.out.println("final.FileName auf Wert: "+fileName+" gesetzt");
				fis = new FileInputStream(file);
				bis = new BufferedInputStream(fis);
				dis = new DataInputStream(bis);
				String line = dis.readLine();
				int linem = 1;
				while (line != null) {
                               ....

ich danke noch Mal für die Hilfe
gazale
 
was macht denn
> objSuche.Start();

?

keine Methode sollte groß geschrieben werden und schon gar nicht wie die Klasse heißen,
nur Konstruktoren schreibt man groß und wie die Klasse,

immer noch: auslesen() entweder aus dem setFileName()-Button aufrufen oder aus einem neuen Button 'jetzt gehts los'
 
Danke, es funktioniert.:toll:
Was die Namen betrifft bin ich noch ein Bluttiger Anfänger! Hast du eventuell ein Link wo ich es nach schauen kann was und wie ich sie benennen können??
 
einen Link dazu habe ich nicht,
hab im Lehrbuch
http://openbook.galileocomputing.de/javainsel7/
kurz nachgeschaut, aber nicht so schnell zu finden,

mach es einfach so, wie man es in allen Beispielen im Internet bzw. in Büchern sieht 😉

dass nicht alle Methoden genau getName() heißen können dürfte klar sein,
aber wie man einfach so auf Großschrift kommt, ist mir schleierhaft
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben