Fragen zu JTextArea

Status
Nicht offen für weitere Antworten.

Stefan3333

Mitglied
Hallo,

gibt es in Java eine Art JTextArea in der man zwischen ASCII, UniCode oder Byteweises anzeigen hin und her wecheseln kann? Oder muss man sich sowas selber basteln?

Woher weiss ich eigentlich was gerade benutzt wird? ASCII oder UNICODE?

MFG
 
R

Roar

Gast
java benutz intern unicode. musst mal ausprobieren wie das bei der TA ist.
 

Stefan3333

Mitglied
Hi,

ich habe noch eine andere Frage bezüglich der Perfomance. Eine Datei von ca 200 KB braucht (mit Zeilenumbruch im JTestArea) ca 40 Sekunden bis sie geladen ist. Das kann doch nicht richtig sein. Ohne Zeilenumbruch brauchen ich in etwa 10 Sekunden. Was allerdings auch noch viel zu langsam ist. 200 KB sind doch nicht viel!

Hier mein Code

Code:
	public void openFile(String filepath, String file)
	{
		
		if (UnicodeRadioButton.isSelected())
		{
			try
			{
				Textfeld.setText("");
				
				BufferedReader in = new BufferedReader(new FileReader(filepath));
				
				int bytes = 0;
				final int LAENGE = 50;
			
     			char[] buffer = new char[LAENGE];
				
				while (in.read(buffer, 0, LAENGE) != -1)
				{
					Textfeld.append(String.copyValueOf(buffer));
					bytes = bytes + LAENGE;
					
				}

				System.out.println("bytes " + bytes);
				
			
				
			}
			catch ( IOException e)
			{
				String message  = "Beim öffnen der Datei" + file + " ist ein Fehler aufgetreten";
					   message += "\n\nMeldung\n\n" + e.getMessage(); 
				
				JOptionPane.showMessageDialog(null, message, "Dateifehler", JOptionPane.WARNING_MESSAGE );
			}
		}

		
	}
 
R

Roar

Gast
TextField.append() ist wahrscheinlich der performanve killer hier denk ich...
hau die daten erstmal in einen StringBuffer beim einlesen, und am ende den ganzen packen in die TextArea. dann hast du auch Code und GUI schön getrennt.
 

Stefan3333

Mitglied
Kurze Verständnisfrage:

Folgender Code braucht Ewigkeiten (ca 13 Sekunden) bis er fertig ist. Liegt das an dem String? Vielleicht die Größe? Entsteht hier ein Overflow?

Code:
	String test = "";

				for (long i = 0; i < 40000; i++)
					{
					
					test += "a";
				
					}
 
R

Roar

Gast
@A3XX: falsches forum?? wolltest du nicht lieber nen eigene thread dafür aufmachen? :?:

@stefan: ja das dauert lange, nein da ensteht kein overflow ( StackOverflow wird manchmal geworfen).
das liegt daran dass Strings unveränderliche Objekte sind. bei jerer änderung an einem String wird ein neues string objekt erzeugt. darum dauert das so ewig lange. StringBuffers sollte man deshalb bei solchen dingen wie datei einlesen usw. verwenden, denn die sind veränderlich.

In der API gibts mehr informationen dazu:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html
 
B

bygones

Gast
Stefan3333 hat gesagt.:
Code:
	String test = "";

				for (long i = 0; i < 40000; i++)
					{
					
					test += "a";
				
					}
Das ist einer der größten Performance Killer die es gibt. Da die StringKlasse in Java als final deklariert wurde wird bei einem Aneinanderhängen (sowie bei allen Methoden der Klasse String, die den String "scheinbar" verändern) ein neues String Objekt erzeugt.

D.h. für deinen Code erzeugst so um 40.000 Objekte... Dafür gibt es dann die Klasse StringBuffer den man über append neue Strings aneinanderhängen kann:

Code:
StringBuffer test = new StringBuffer();
for(long i = 0; i < 40000; i++) {
      test.append("a");
}

[edit]ah roar war schneller.... habe das andere Thema in eigene Thread [/edit]
 

Stefan3333

Mitglied
Also ich speichere die ganze Geschichte jetzt erst in einem StringBuffer aber so wirklich schnell ist die ganze Sache immer noch nicht. Da frage ich mich wie andere Programme das hinkriegen dass Dateien so schnell geladen werden.

Für meine 200KByte Testdatei brauche ich immernoch 3 Sekunden (mit Zwischenpuffer) und ca 2 Sekunden ohne Zwischenpuffer. Ich dachte immer das beispielsweise der BufferedReader gerade aus Geschwingdigkeitsgründen gemacht wurde? Wieso ist der langsamer als Byteweises lesen?
 

Maks

Aktives Mitglied
DAS ist der bisher beste DateiLeser, den ich gefunden habe:
geht ruckzuck und vielleicht findest Du damit auch eine Optimierung DEINES Programms!

Code:
// DateiLeser.java
import java.io.*;
import java.util.*;

class DateiEinleser {

public static void main(String[] args) throws IOException {

String KomplettString = new String();
String ReturnString = new String();
int BeginnIP = 0;
 
    PrintWriter out = new PrintWriter(System.out, true);
        if (args.length == 0) {
            out.println("Starten mittels java FileTest <Datei/Verzeichnisname>");
            return;
        }
        File f = new File(args[0]);
        if (!f.exists() || !f.canRead()) {
            out.println("Datei/Verzeichnis \"" + f + "\" nicht gefunden");
            return;
        }

        if (f.isDirectory()) {
            out.println("Inhalt von Verzeichnis \"" + f + "\":");
            String[] datei = f.list();
            for (int i = 0; i < datei.length; i++)
                out.println(datei[i]);

        } else {
            out.println("Inhalt von Datei \"" + f + "\":");
            FileReader reader = new FileReader(f);
            int i;
            while ((i = reader.read()) != -1) 
            {
			out.print((char)i);
             }
	out.flush();
        }

   }
}
 
R

Roar

Gast
toll... aber das gibt dir den text nur auf der konsole aus! er will den text doch weiterverarbeiten in der TextArea
 

Maks

Aktives Mitglied
Roar hat gesagt.:
toll... aber das gibt dir den text nur auf der konsole aus! er will den text doch weiterverarbeiten in der TextArea

ja sagen wir so:
wenn die Methode für Textareas folgendermaßen aussieht
Code:
new TextArea("Hello", 5, 40);
dann kann man doch einfach die letzten Zeilen dieses DateiLesers hernehmen und nur die Zeile
Code:
out.print((char)i);
ersetzen durch einen String. Dort wird alles reingeschrieben und man kann auf ein "append" oder so verzichten.
diese char(i)-Zeile gibt in rasender Geschwindigkeit große Textfiles aus, also müßte sich das doch auch für Textareas nutzen lassen? (hab noch nie mit sowas experimentiert)

Habe in einem anderen Programm alles in einen String eingelesen um den durchsuchen zu können und die Performance ist immer noch gut.
 

Slava

Bekanntes Mitglied
dann mach statt out.print((char)i);-> deinbufferedreader.append((char)i);
am ende
deine_textarea.setText(deinbufferedreader.toString());
 

Maks

Aktives Mitglied
frantsuzov hat gesagt.:
dann mach statt out.print((char)i);-> deinbufferedreader.append((char)i);
am ende
deine_textarea.setText(deinbufferedreader.toString());

obwohl die Antort nicht für mich bestimmt war, genial, muß ich gleich mal probieren! :wink:
 

Stefan3333

Mitglied
Hi,

ich komme leider erst jetzt wieder dazu weiter zu arbeiten. Naja, danke für die Antworten. Ich bin zwar immer noch nicht zufrieden aber es geht schon wesentlich besser als vorher. Leider scheint die JTextArea überhaupt nicht für große Dateien geeignet zu sein :cry: (Vorausgesetzt wir bezeichnen 200 KB als große Datei)

Wenn ich eine große Datei öffne tut sich in meinem Programm garnichts mehr. Setze ich den Zeilenumbruch allerdings auf false geht es wieder. Allerdings kann man dann nichts mehr richtig lesen wenn alles in einer Zeile steht.

Sowas dummes...

Weiß jemand ob man da etwas machen kann? Oder ob ich eine andere Komponente zum anzeigen nehmen sollte?
 

Maks

Aktives Mitglied
Stefan3333 hat gesagt.:
Hi,

Ich bin zwar immer noch nicht zufrieden aber es geht schon wesentlich besser als vorher.
....

Wenn ich eine große Datei öffne tut sich in meinem Programm garnichts mehr. Setze ich den Zeilenumbruch allerdings auf false geht es wieder. Allerdings kann man dann nichts mehr richtig lesen wenn alles in einer Zeile steht.

wie sieht denn Dein Programm nach der Änderung aus?, vielleicht kann man sich dann ein besseres Bild machen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5
B fragen zur for-schleife und arrays Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben