datei oeffnen->jTextArea anzeigen

Status
Nicht offen für weitere Antworten.

baer1208

Aktives Mitglied
hy!

hab da ein kleines problem mit datei einlesen:
mal der code:
Code:
private void doLoadAdressAs() {
      FileDialog fileDialog = new FileDialog(this, "Open ...", FileDialog.LOAD);
    fileDialog.show();
    if (fileDialog.getFile() == null)
      return;
    fn = fileDialog.getDirectory() + File.separator + fileDialog.getFile();
    openStream(fn);
    }
    private void openStream(String datei) {
      try {
        String dat = datei;
        FileInputStream indat = new FileInputStream(dat);
        InputStreamReader instream = new InputStreamReader(indat);
        BufferedReader stream = new BufferedReader(instream);

        readStream(stream, dat);

        indat.close();
        instream.close();
        stream.close();
      } catch(Exception e) {
        JOptionPane.showMessageDialog(null,"Fehler in 'openStream'");
      }
    }

    private void readStream(BufferedReader file, String datei) {
      try {
        String line;
        while((line = file.readLine())!= null) {
          StringTokenizer tokens = new StringTokenizer(line, ";");
          ArrayList list = new ArrayList();

          String vorname = tokens.nextToken();
          String nachname = tokens.nextToken();
          String adresse = tokens.nextToken();

          list.add(new Daten(vorname, nachname, adresse));
          addToJTextAreas();
        }
      } catch (Exception e) {
        JOptionPane.showMessageDialog(null,"Fehler in 'readStream'");
      }
    }
    private void addToJTextAreas() {
      jTextArea1.setText(daten.getVorname());
      jTextArea2.setText(daten.getNachname());
      jTextArea3.setText(daten.getAdresse());
    }
Fehler zeigt er in der methode readStream

ciao
 
Ich auch nicht, aber wenn wir die Zeile wüssten, würds vielleicht gehen, aber auf Anhieb find ich nix, was null ist.

Edit: dritter, aber LOOOL @foobar
 
hab ja ne exception eingebaut...er schreibt
"java.lang.NullpointerException"
wenn ich die Exception leer lasse macht er nichts...er tut so als hätte er was getan, fügt es aber nicht den JTextAreas an...
also kann ich nicht sagen in welcher zeile es liegt... d methode ist "readStream"

ciao
 
baer1208 hat gesagt.:
methode ist "readStream"

ciao

Nimm nen Debugger und schau dir die Methode an, merk dir die Zeile ehe er abstürzt und schreib sie hier rein, so können wir eher raten wo der Fehler liegt, bzw. du kommst selbst drauf.
 
@bear

Die interessanten Informationen einer Exception bekommst du so:
Code:
try{
  somethingVeryDangerous();
}
catch( Exception e ){
  e.printStackTrace();  // << hier werden die wirklich wichtigen Infos ausgedruckt.
}
 
danke für die hilfe! hab die zeilen markiert! //<--------------------

Code:
   private void doLoadAdressAs() {
      FileDialog fileDialog = new FileDialog(this, "Open ...", FileDialog.LOAD);
    fileDialog.show();
    if (fileDialog.getFile() == null)
      return;
    fn = fileDialog.getDirectory() + File.separator + fileDialog.getFile();
    openStream(fn);//<----------------------
    }
    private void openStream(String datei) {
      try {
        String dat = datei;
        FileInputStream indat = new FileInputStream(dat);
        InputStreamReader instream = new InputStreamReader(indat);
        BufferedReader stream = new BufferedReader(instream);

        readStream(stream, dat);//<----------------------------

        indat.close();
        instream.close();
        stream.close();
      } catch(Exception e) {
        JOptionPane.showMessageDialog(null,"Fehler in 'openStream'");
      }
    }

    private void readStream(BufferedReader file, String datei) {
      try {
        String line;
        while((line = file.readLine())!= null) {
          StringTokenizer tokens = new StringTokenizer(line, ";");
          ArrayList list = new ArrayList();

          String vorname = tokens.nextToken();
          String nachname = tokens.nextToken();
          String adresse = tokens.nextToken();

          list.add(new Daten(vorname, nachname, adresse));
          addToJTextAreas(); //<----------------
        }
      } catch (Exception e) {
      e.printStackTrace();  
      //JOptionPane.showMessageDialog(null,e.toString() + "Fehler in 'readStream'");
      }
    }
    private void addToJTextAreas() {
      jTextArea1.setText(daten.getVorname());  //<--------------
      jTextArea2.setText(daten.getNachname());
      jTextArea3.setText(daten.getAdresse());
    }

schaus mir auch gleich mal an!
ciao
 
Reihung der zeilen ist von unten nach oben, also zuerst 46, dann 38 usw...bin da noch nicht draufgekommen...
methoden in der klasse "daten" sind implementiert und geben einen "String" zurück...also sollts daran nicht liegen...
ciao
 
Füg in addToJTextAreas mal diese 3 Zeilen ein:
Code:
System.out.println( "jTextArea1 = " + jTextArea1 );
System.out.println( "daten = " + daten );
System.out.println( "vorname = " + daten.getVorname() );

Theoretisch sollte eine davon "irgendwas = null" ausgeben (das wäre dann der Fehler).
 
Code:
list.add(new Daten(vorname, nachname, adresse));
          addToJTextAreas();
du fügst ein neues Daten Objekt in die Liste ein - aber nirgends ist die Variable 'daten' zu sehen... wo wird die denn intialisiert (bzw. wo nicht :wink: )
 
ich erzeuge ein neues Objekt "Daten" und fügs der liste hinzu...also sollte ich theoretisch auf das Objekt "Daten" mit "daten" zugreifen können...
ciao
 
hy!

hab ka warum dass er daten = null schreibt...new Daten(vorname, nachname,adresse) sollt das eigentlich erstellen was ich bis jez so glesn hab...anscheinend wisst ihr s auch nicht...

hab jez was weggelassen und dafür gleich in jTextArea schreiben lassen

Code:
    private void readStream(BufferedReader file, String datei) {
      try {
        String line;
        while((line = file.readLine())!= null) {
          StringTokenizer tokens = new StringTokenizer(line, ";");
          ArrayList list = new ArrayList();

          String vorname = tokens.nextToken();
          String nachname = tokens.nextToken();
          String adresse = tokens.nextToken();
          
          jTextArea1.setText(vorname);
          jTextArea2.setText(nachname);
          jTextArea3.setText(adresse);
          //list.add (new Daten(vorname, nachname, adresse));
          //addToJTextAreas(); 
        }
      } catch (Exception e) {
      e.printStackTrace();
      JOptionPane.showMessageDialog(null,e.toString() + "Fehler in 'readStream'");
      }
    }

die .txt datei die ich oeffnen lasse schaut folgendermaßen aus:
vn;nn;ad
vn2;nn2;ad3
vn3;nn3;ad3
vn4;nn4;ad4

aber schreiben tut er in die jTextAreas nur vn4; nn4;ad4
woran kann das liegen?? :bahnhof:

ciao
 
Weil das letzte mal wenn die Schlaufe durchlaufen wird vorname = nn4, etc.. ist.

Irgendwie versteh ich nicht, wie das anders sein sollte :bahnhof:

[Edit: ach verdammt, Textarea und nicht Textfield... ]
 
du musst über append den Text anfügen - so überschrebst du immer den vorhandenen Text der TextArea
 
Hi.

Wenn ich mich nicht verguckt hab und mich nicht vertue, wird mit setText(blabla), der vorige Text immer wieder überschrieben. Versuchs mal mit append...

EDIT: ups... zu spät... 😳
 
danke! funktioniert!
damits aber untereinander steht hab ich noch + "\n" anfügen müssen! oder gibts da ne schönere lösung??
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben