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...)
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(); }
}
}