TextArea, RandomAccessFile, Apend und andere Tricks...

Surfforfun

Mitglied
Hallo!
Gegeben sind 2 Klassen - die Erste erzeugt eine TextArea, der Aufruf erfolgt aus der Zweiten heraus.
Die Kommentare /*....*/ sind später noch wichtig.

Die zweite Klasse enthält die Methode main. Eine Text Area wird mit der ersten Klasse "TextFlaeche" erzeugt. Der Quelltext der ersten Klasse wird mit RandomAccessFile gelesen und im Array "content" gespeichert.
Der Text wird mit append() zeilenweise in die TextArea geschrieben - und zwar kopfüber! (nicht meine Idee!) Die Zeilen werden nummeriert...
Die mehrzeiligen Kommentare sollen dabei ausgelassen werden (/*...*/)!
Ich habe das mit einer Variablen kommentarVanish hinbekommen, die ich einschalte (/*) und wieder ausschalte (*/).
Warum werden die Zeilen nicht ausgeblendet, bei denen der Kommentar beginnt (/*Diese Klasse ist...)


Java:
import java.awt.*;
import java.awt.event.*;

/* Diese Klasse ist ein Frame das eine TextArea enthhaelt.
   In dieser TextArea kann man Zeilenweise Texte Schreiben
   indem man die Methode append(String s) der Klasse TextArea 
   aufruft.
*/



/*public class TextFlaeche extends Frame {  //Hier faengt die Klasse an
  TextArea ta ;
  public TextFlaeche(String s){
    super(s);
    ta = new TextArea(30,100);  //Die TextArea wird initialisiert
    add(ta);
    pack();
    addWindowListener(new WindowAdapter()
      { public void windowClosing(WindowEvent e){System.exit(0);}});
    setVisible(true);
  }
} //Ende der Klasse
*/

public class TextFlaeche extends Frame { 
  
  TextArea ta ;
  
  public TextFlaeche(){
     ta = new TextArea(30,100);
     add(ta);
    pack();
    
     addWindowListener(new WindowAdapter()
    { public void windowClosing(WindowEvent e) 
      {System.exit(0);}});
     setVisible(true);
    
  }
}

Java:
import java.io.*;

public class AutoShow {
  
  public static void main(String[] args) {
    String[] content = new String[1000];
    
    try {
      RandomAccessFile quell = new RandomAccessFile("TextFlaeche.java", "r");
      TextFlaeche  tf1 = new TextFlaeche();      
      int counter = 0;
      
      boolean kommentarVanish = false;
      
      long seek = 0;
      long length = quell.length();
      
      while(seek < length) { 
        String s = quell.readLine();
        content[counter] = s;
        seek = quell.getFilePointer();
        counter++;
      }  
      quell.close();
      System.out.println("Number of lines (ohne Kommentar): "+counter);
      int lineNumber = counter;
      
      for(int i=0; i<counter; i++){
        
        if (content[(counter-1)-i].contains("*/")){
          kommentarVanish = true;
        }
        if (content[(counter-1)-i].contains("/*")){
          kommentarVanish = false;
        }
        //if (!kommentarVanish){ 
        if (kommentarVanish) continue;
        tf1.ta.append(lineNumber+" "+content[(counter-1)-i]+"\r\n");
        lineNumber = lineNumber-1;
        //}
      }
      System.out.println("done");
      
    } catch (IOException e)
    { e.printStackTrace(); }
  }
}
 

Surfforfun

Mitglied
[EDIT][/EDIT]
Java:
for(int i=0; i<counter; i++){
        System.out.println("Durchlauf: "+i+" (counter-1)-i: "+((counter-1)-i));
        if (content[(counter-1)-i].contains("*/")){
          kommentarVanish = true;
...

Sieht gut aus: Die Array-Elemente werden von 41-0 runter gezählt!

Durchlauf: 0 (counter-1)-i: 41
...
Durchlauf: 41 (counter-1)-i: 1 [EDIT]bis 0 meine ich![/EDIT]

Und jetzt sollen noch die Kommentare, also die beiden Zeilen, die mit /* beginnen raus!
Es kommt ja auch so ungefähr hin, die Zeilen werden entfernt, wenn "kommentarVanish" true wird!
Warum aber werden die ersten Zeilen trotzdem appended??
Ist es so, dass "kommentarVanish" zu spät aktualisiert wird?
Als lokale Variable in der Schleife deklariert kommt jedenfalls das gleiche Ergebnis!
 
Zuletzt bearbeitet:

parabool

Bekanntes Mitglied
Ich meine:
Java:
System.out.println("Durchlauf: "+((counter-1)-i)+" = "+content[(counter-1)-i]);
um den jeweiligen Inhalt von content zu sehen, ob "*/" oder "/*" überhaupt gefunden werden kann.
 
Zuletzt bearbeitet:

Surfforfun

Mitglied
Das gibt dann den ganzen Quelltext aus - mit diesen Zeilen, die mit */ und /* beginnen.
komisch ist, dass das rückwärts sein soll... aber dann ist */ zum Anfang und /* zum Ende der Feldbegrenzung dessen, was nicht ausgegeben werden soll richtig!
 

parabool

Bekanntes Mitglied
Wenn
Java:
if (content[(counter-1)-i].contains("/*")){
 
 kommentarVanish = false;
  
}

dann schreibst du ab dieser ab dieser Zeile wieder in deine Textarea.
Aber genau diese Zeile soll ja noch nicht rein (weil: noch Kommentarzeile) sondern erst die nächste.


Java:
einfacher Vorschlag: 
if (content[(counter-1)-i].contains("/*")){
  
   kommentarVanish = false;
   continue;
}
 
Zuletzt bearbeitet:

Surfforfun

Mitglied
Ich freue mich!!! Vielen Dank =)

Also, dass ist die eine Klasse mit vielen Kommentaren zwischen /* und */:

Java:
import java.awt.*;
import java.awt.event.*;

/* Diese Klasse ist ein Frame das eine TextArea enthhaelt.
   In dieser TextArea kann man Zeilenweise Texte Schreiben
   indem man die Methode append(String s) der Klasse TextArea 
   aufruft.
*/



/*public class TextFlaeche extends Frame {  //Hier faengt die Klasse an
  TextArea ta ;
  public TextFlaeche(String s){
    super(s);
    ta = new TextArea(30,100);  //Die TextArea wird initialisiert
    add(ta);
    pack();
    addWindowListener(new WindowAdapter()
      { public void windowClosing(WindowEvent e){System.exit(0);}});
    setVisible(true);
  }
} //Ende der Klasse
*/

public class TextFlaeche extends Frame { 
  
  TextArea ta ;
  
  public TextFlaeche(){
     ta = new TextArea(30,100);
     add(ta);
    pack();
    
     addWindowListener(new WindowAdapter()
    { public void windowClosing(WindowEvent e) 
      {System.exit(0);}});
     setVisible(true);
    
  }
}

Dann die ander Klasse, die den Quelltext der Ersten liest und rückwärts in die TextArea der erten Klasse schreibt (mit nummerierten Zeilen...).
Dabei wird mit der Variablen kommentarVanish ein und ausgeschaltet, um Zeilen zu überspringen. Die Zeile, die noch Kommentar ist, obwohl kommentarVanish wieder false ist, wird mit continue; übersprungen - darunter steht die append()-Anweisung, die Zeilen zur TextArea hinzufügt. Continue überspring das und es geht direkt zur nächsten For-Schleifen-Iteration:

Java:
import java.io.*;

public class AutoZeigeLineNumberUmgekehrtUeberspringe {
  
  public static void main(String[] args) {
    String[] content = new String[1000];
    
    try {
      RandomAccessFile quell = new RandomAccessFile("TextFlaeche.java", "r");
      TextFlaeche  tf1 = new TextFlaeche();      
      int counter = 0;
      
      boolean kommentarVanish = false;
      
      long seek = 0;
      long length = quell.length();
      
      while(seek < length) { 
        String s = quell.readLine();
        content[counter] = s;
        seek = quell.getFilePointer();
        counter++;
      }  
      quell.close();
      System.out.println("Number of lines: "+counter);
      int lineNumber = counter;
      
      for(int i=0; i<counter; i++){
        //System.out.println("Durchlauf: "+i+" (counter-1)-i: "+((counter-1)-i));
        System.out.println("Durchlauf: "+((counter-1)-i)+" = "+content[(counter-1)-i]);
        if (content[(counter-1)-i].contains("*/")){
          kommentarVanish = true;
        }
        if (content[(counter-1)-i].contains("/*")){
          kommentarVanish = false;
          continue;
        }
        //if (!kommentarVanish){ 
        if (kommentarVanish) continue;
        tf1.ta.append(lineNumber+" "+content[(counter-1)-i]+"\r\n");
        lineNumber = lineNumber-1;
        //}
      }
      System.out.println("done");
      
    } catch (IOException e)
    { e.printStackTrace(); }
  }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JavaBeginner22 TextArea, ohne Zeilenumbruch? Java Basics - Anfänger-Themen 4
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
J Buchstaben aus textArea extrahieren Java Basics - Anfänger-Themen 4
O ScrollPane, TextArea Java Basics - Anfänger-Themen 1
J Ärger mit TextArea und Linesep. Java Basics - Anfänger-Themen 3
T Java FX TextArea Java Basics - Anfänger-Themen 3
M TextArea scrollbar bei editable false Java Basics - Anfänger-Themen 5
D JScrollPane mit TextArea Java Basics - Anfänger-Themen 5
M Textarea auslesen und beschreiben Java Basics - Anfänger-Themen 8
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
T Klassen JTextArea und TextArea Java Basics - Anfänger-Themen 8
S Erste Schritte Sprachermittler - Datei öffnen, Text in TextArea, Bereinigen, Auswerten Java Basics - Anfänger-Themen 14
P JavaFX TextArea.setText Java Basics - Anfänger-Themen 13
K Symmetrische Verschlüsselung von TextArea Java Basics - Anfänger-Themen 7
fLooojava Output in einer Textarea einfärben Java Basics - Anfänger-Themen 7
S import java.*; vs import java.awt.TextArea Java Basics - Anfänger-Themen 7
F TextArea auslesen und in Datei speichern Java Basics - Anfänger-Themen 4
G textarea action Java Basics - Anfänger-Themen 5
F Erste Schritte String von anderer Klasse auf TextArea von erster Klasse Java Basics - Anfänger-Themen 12
A Timer: textarea.getText() mit Variable vergleichen Java Basics - Anfänger-Themen 3
M TextArea hält Zeilengrenze nicht ein Java Basics - Anfänger-Themen 4
M Textarea auslesen Java Basics - Anfänger-Themen 6
H Input/Output Inhalt einer TextArea in Hex umwandeln Java Basics - Anfänger-Themen 10
P Textarea auslesen Java Basics - Anfänger-Themen 18
R Array in Textarea ausgeben Java Basics - Anfänger-Themen 3
Binary.Coder Bruch in Textarea Java Basics - Anfänger-Themen 5
0 String farbig in TextArea Java Basics - Anfänger-Themen 10
A TextArea und ScrollBar Java Basics - Anfänger-Themen 17
B ArrayList zu TextArea Java Basics - Anfänger-Themen 5
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
G Text aus TextArea in Zwischenablage kopieren Java Basics - Anfänger-Themen 6
S Texteingabe in Textarea sperren? Java Basics - Anfänger-Themen 3
M Scrollbar zu Textarea Java Basics - Anfänger-Themen 5
Luk10 TextArea und Konsole ... Java Basics - Anfänger-Themen 3
C ArrayList In textarea ausgeben Java Basics - Anfänger-Themen 3
D TextArea clearen mit setText("") ? Java Basics - Anfänger-Themen 21
K In TextArea ausgeben ? Java Basics - Anfänger-Themen 4
M im Programm TextArea hinzufügen Java Basics - Anfänger-Themen 2
K Txt statt in TextArea in JTable einlesen und bearbeiten können Java Basics - Anfänger-Themen 4
S String repräsentation eines XML-Files für Textarea formatieren. Java Basics - Anfänger-Themen 2
Z Text aus externer Datei in TextArea einlesen Java Basics - Anfänger-Themen 5
Z TextArea Größe festlegen Java Basics - Anfänger-Themen 22
S Zeilenumbruch awt.textarea Java Basics - Anfänger-Themen 16
P Textarea aktualisieren, Referenz fehlt Java Basics - Anfänger-Themen 4
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
J Multithreading mit einer TextArea Java Basics - Anfänger-Themen 29
S Konsole auf Textarea Java Basics - Anfänger-Themen 7
N String vom InputStream in TextArea übertragen Java Basics - Anfänger-Themen 6
E Probleme mit setText() bzw. append() bei TextArea Java Basics - Anfänger-Themen 13
D Probleme mit TextArea und Textfield Java Basics - Anfänger-Themen 27
M Scrollpane an Textarea anhängen Java Basics - Anfänger-Themen 3
W TextArea Probleme Java Basics - Anfänger-Themen 3
M String in textarea übernehmen klappt nicht Java Basics - Anfänger-Themen 13
P TextArea Problem Java Basics - Anfänger-Themen 8
G TextArea - Strings farbig Java Basics - Anfänger-Themen 2
D Button im Bezug auf TextArea Java Basics - Anfänger-Themen 17
Q TextArea - wie mache ich einen Absatz? Java Basics - Anfänger-Themen 9
H Textarea aktualisieren Java Basics - Anfänger-Themen 2
P aus Textarea bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
J Textarea (zeichen) in Zahlen umwandeln Java Basics - Anfänger-Themen 5
R Variable in Textarea auslesen Java Basics - Anfänger-Themen 7
G Bild hinter TextArea Java Basics - Anfänger-Themen 2
G Automatischer Zeilenumbruch bei einer TextArea Java Basics - Anfänger-Themen 16
D textarea in einer JSP Java Basics - Anfänger-Themen 3
M Inhalt einer TextArea in die Zwischenablage kopieren Java Basics - Anfänger-Themen 2
L Textformatierung ist TextArea Java Basics - Anfänger-Themen 7
N In der Textarea an einer bestimmten Positon weiterschreiben? Java Basics - Anfänger-Themen 6
L Strings von Datei lesen und in TextArea schieben Java Basics - Anfänger-Themen 3
7 TextArea Java Basics - Anfänger-Themen 3
O Konsolenausgabe auf TextArea umleiten Java Basics - Anfänger-Themen 4
C HTML in TextArea deaktivieren. Java Basics - Anfänger-Themen 2
V TextArea einlesen, zeichen verändern, ausgeben! Java Basics - Anfänger-Themen 2
U Cursorposition in Textarea rausfinden Java Basics - Anfänger-Themen 7
R in einer TextArea den Cursor gleich anzeigen lassen Java Basics - Anfänger-Themen 3
G wieso ist die TextArea im Fenster nicht sichtbar Java Basics - Anfänger-Themen 3
N Teilweiseausgabe eines Vectors in eine TextArea Java Basics - Anfänger-Themen 21
B Größe der Textarea Java Basics - Anfänger-Themen 3
N Inhalt einer TextArea überschreiben Java Basics - Anfänger-Themen 4
N Wert aus Coice auslesen und in textarea einfügen Java Basics - Anfänger-Themen 23
M JDialog mit TextArea Java Basics - Anfänger-Themen 2
J TextArea auf Anfang setzen Java Basics - Anfänger-Themen 3
L Frage zu TextArea! Java Basics - Anfänger-Themen 16
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
N Randomaccessfile Java Basics - Anfänger-Themen 2
G Wie gebe ich einen Dateipfad in RandomAccessFile an? Java Basics - Anfänger-Themen 2
R RandomAccessFile verständnis Problem Java Basics - Anfänger-Themen 10
D RandomAccessFile Java Basics - Anfänger-Themen 2
P RandomAccessFile writeInt() und writeChar() Java Basics - Anfänger-Themen 3
L RandomAccessFile liest nicht alle Zeichen Java Basics - Anfänger-Themen 3
D Erste Schritte RandomAccessFile "Leerzeichen" löschen Java Basics - Anfänger-Themen 6
F Kann RandomAccessFile Zip Datei lesen? Java Basics - Anfänger-Themen 14
B Klassen RandomAccessFile Java Basics - Anfänger-Themen 7
B Collections RandomAccessfile & Linkedlist Java Basics - Anfänger-Themen 4
M Frage zur Klasse RandomAccessFile Java Basics - Anfänger-Themen 8
cosmic Frage zu der RandomAccessFile Klasse Java Basics - Anfänger-Themen 6
K RandomAccessFile Java Basics - Anfänger-Themen 4
T RandomAccessFile - Wie schreibe ich etwas in eine txt Datei? Java Basics - Anfänger-Themen 5
C RandomAccessFile vs. Streams Java Basics - Anfänger-Themen 5
D text dateien mit RandomAccessFile manipulieren Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben