auf jtextarea zugreifen

Status
Nicht offen für weitere Antworten.

Oni

Top Contributor
servus,

ich habe eine txt-datei die ich mir in einer jtextarea anzeigen lasse. jetzt würde ich gerne die liste zeile für zeile durchgehen und berarbeiten. wenn eine zeile fertig bearbeitet ist, würde ich sie dann gerne löschen, so dass am ende die jtextarea leer ist.

geht das?

im moment habe ich das so gelöst das ich wenn ich die txt-datei lade sie gleichzeitig in eine arraylist packe und die dann bearbeite die bildschirmanzeige bleibt halt unverändert.
 

Oni

Top Contributor
also ich habe eine liste mit daten. sieht in etwa so aus.
Code:
200x100x60x22=2x33=4
200x160x60x23=2x33=4
200x140x60x65=2x33=4
200x130x60x24=2x33=4

die 'x' sind trennzeichen die ich später mit string.split("x"); auseinanderbaue.
aus diesen daten baue ich mir eine url zusammen die ich dann wegschicke.

im jtextarea wird die liste einfach nur angezeigt und sobald ich eine url zusammengebaut habe und wegschcikt habe, soll die zeile dann aus der jtextarea gelöscht werden.

ist das so verständlicher geworden?

ansonst poste ich mal etwas vom code aber den habe ich auf einem rechner der gerade nicht online ist...
 

Wildcard

Top Contributor
Da währe JList wirklich besser. Das ganze geht doch aber eh viel zu schnell um das vernünftig anzeigen zu können!?
 

Oni

Top Contributor
ich habe einen thread.sleep(von mehrern sek)

gut ich gucke mal ob ich mit jlist zurecht komme :)

wenn nicht melde ich mich nochmal.

schonmal danke für den tip.
 
G

Guest

Gast
die frage ist berechtigt.

ich möchte simulieren das ein php-formular per hand ausgefüllt worden ist und es soll nicht auffallen das es mit einem tool gemacht worden ist.
 

Oni

Top Contributor
ist nix schlimmes, das sind auch keine IP's sondern koordinaten.

das ist für ein onlinegame.
 

Oni

Top Contributor
so es funzt
aber ich habe noch ein problem mit der darstellung.

das sieht in etwa so aus
Code:
DefaultListModel model = new DefaultListModel();

JList list = new JList(model);

// jetzt hole ich mir die daten aus der txt-datei 
model.addElement(line);

//es wird dann alles korrekt angezeigt.

//dann arbeite ich die liste ab

int x = model.getSize();
int y = 0;

while(y < x)
{
  String str = (String) model.elementAt(y);
  ...
  // hier kommt unwichtiger code
  ...
  model.removeElementAt(y);
  --x;
  
  // hier kommt noch ein thread.sleep von paar sek
}

das funzt auch, aber die element werden die ganze zeit in der list angezeigt (sieh sollten ja eigentlich einzelt gelöscht werden).
erst ganz am ende sind dann plötzlich alle element gleichzeitig weg.

kann man da vielleicht noch sowas wie ein repaint() einbauen oder sowas in der art?
 

thE_29

Top Contributor
du musst dann wieder sagen

list.setListData(vector);


Du hattest vorher deine Daten ja in einem Vector/ArrayList oder??

dann lass die Daten auch dort und änder sie im Vektor..
 

Oni

Top Contributor
ne habe keinen vector oder arraylist.

habe nur die JList für die darstellung und das DefaultListModel model wo die daten rein kommen.

muss ich dann list.setListData(model) schreiben?
 

Sky

Top Contributor
thE_29 hat gesagt.:
du musst dann wieder sagen

list.setListData(vector);


Du hattest vorher deine Daten ja in einem Vector/ArrayList oder??

dann lass die Daten auch dort und änder sie im Vektor..

Ich würde das Model ändern... dazu ist es ja schließlich da!


list.setListData(vector);
Den Aufruf finde ich etwas von hinten in die Brust ins Auge. Es wird jedes mal ein neues Model erstellt und gesetzt.
 

Oni

Top Contributor
AbstractListModel#fireIntervalRemoved

damit geht das? das ihr euch immer so kurz fassen müsst ;-)
 

Oni

Top Contributor
ich mache zum ersten mal etwas mit swing und habe da noch nicht so den durchblick.
in was muss ich das model ändern?

die erklärung im java handbuch sind ziemlich mager
 

thE_29

Top Contributor
Warum ist der Aufruf was schlimmes??

Wenn interessiert das Model??

Ich hatte meine Daten immer in einem Vector und bevor ich da jetzt 2mal removen gehe (also das model und vector) remove ich 1mal von Vector und setze es wieder hin...

Da brauch ich weder nen event abfeuern, noch mit nem Model rumgurken etc, da der Vector schönere remove Fähigkeiten hat..
 

Sky

Top Contributor
thE_29 hat gesagt.:
Warum ist der Aufruf was schlimmes??

Ich finde es konzeptionell nicht so schön, da die Daten redundant vorliegen (einmal im Vector einmal im Model). Ich verwende daher nur ein Model.
Aber 'schlimm' ist der Aufruf natülich nicht.
 

Sky

Top Contributor
Oni hat gesagt.:
AbstractListModel#fireIntervalRemoved

damit geht das? das ihr euch immer so kurz fassen müsst ;-)
Wenn das nicht hilft, dann könnte die Ursache Thread#sleep sein, weil der Main-Thread (wo deine GUI liegt) selbst gerade nicht 'dran' kommt.
 

Oni

Top Contributor
also was soll ich jetzt machen?

list.setListData(model);

geht nicht also brauche ich einen vector?

statt dem model,oder zusätzlich?
 

Oni

Top Contributor
Code:
AbstractListModel#fireIntervalRemoved

ich habe noch garnicht herausgefunden wo bzw wie ich das einbaue.
ist das die einfachere lösung als das mit dem vector?
 

Sky

Top Contributor
Wenn es mit dem
Code:
model.remove
nicht geht, so wird Dir
Code:
list.setListData(model);
auch nicht helfen, da im Prinzip das gleiche passiert.

Nachtrag: habe mal in das DefaultListModel reingeschaut. AbstractListModel#fireIntervalRemoved wird bei remove aufgerufen. Also liegt es nicht am entfernen, sondern mit hoher Wahrscheinlichkeit am Thread#sleep.
 

Oni

Top Contributor
aha und wie kann ich das lösen ?

weil den thread sleep möchte ich nciht weg machen.

kann ich die darstellung in einen seperaten thread packen?
Code:
 list.setListData(model); // ergab sowieso einen kompilier fehler
 

Sky

Top Contributor
Nein, du mußt nicht auf dein sleep verzichten. Die Lösung Timer und TimerTask:

Code:
final java.util.Timer timer = new java.util.Timer();
final TimerTask task = new TimerTask() {
  public void run() {
    model.remove(???);
    if ( model.size() == 0 ) {
      this.cancel();
    }
  }
};

Gestartet wird das ganze z.B. so:
Code:
timer.schedule(task, 0, 500);

Das heißt, das der Task sofort beginnt und alle 500 ms wiederholt wird.
 

thE_29

Top Contributor
Das Problem ist das Threads net swing sicher sein, also das Threads deine Swing Gui blockieren können und somit nichts neu gezeichnet wird..

Vorallem wenn es sich um den eventDispatchThread handelt (also wenn du auf nen Kopf drückst und dann ein sleep nachfolgend einbaust).

Da ist halt ein Timer besser zu gebrauchen!


Edit: Achja, @ sky: das model ist automatisch erzeugt (also isses in meinen Fällen mir immer egal) und da ich primär den Vektor benutze und die JList nur zu Anzeige da ist, finde ich meine Version besser!

Sonst müsstest bei JTable auch immer nur das Model nehmen und dort die Daten ändern... (wenn es mit einem AbstractTableModel implementiert ist, ist das aber net grad die super Methode...)
 

Oni

Top Contributor
gut schonmal danke,
ich probiere es mal richtig einzubauen bisher klappt es leider noch nicht.
 

Oni

Top Contributor
irgendwie klappt das nicht.

wenn ich das so mache wie oben^^ und 3 zeilen in der liste habe läuft es 2 mal durch und dann kommt ein array index out of range.

die zeilen werden aber ohnehin nicht gelöscht :-(

ich habe jetzt auch mal das model gegen einen vector getausch, hat aber auch nichts gebracht.
 

Oni

Top Contributor
gibt es nicht noch eine andere lösung?

es muss doch möglich sein vor oder nach dem thread.sleep ein repaint oder sowas in der art zu machen.

oder gibt es vielleicht eine alternative zu thread.sleep?
 

Sky

Top Contributor
thE_29 hat gesagt.:
Achja, @ sky: das model ist automatisch erzeugt (also isses in meinen Fällen mir immer egal) und da ich primär den Vektor benutze und die JList nur zu Anzeige da ist, finde ich meine Version besser!

Sonst müsstest bei JTable auch immer nur das Model nehmen und dort die Daten ändern... (wenn es mit einem AbstractTableModel implementiert ist, ist das aber net grad die super Methode...)

Ok, bei mir isses halt anders (egal ob JList oder JTable) die Daten werden nicht nur angezeigt sonder auch bearbeitet. Wenn ich in einer JTable eine Änderung durchführe geht das bekanntlich direkt ins Model. Somit wäre es in meinen Fällen doppelter Pflegeaufwand.

Da Du's nur zur Anzeige brauchst find' ich es prinzipiell verwendbar; nur wenn man 100 mal den Vector ändert, so wird 100 mal ein neues Model erzeugt. Das ist zwar im Normalfall unproblematisch, aber vom Konzept her gefällt es mir nicht.
 

Sky

Top Contributor
Oni hat gesagt.:
irgendwie klappt das nicht.

wenn ich das so mache wie oben^^ und 3 zeilen in der liste habe läuft es 2 mal durch und dann kommt ein array index out of range.

die zeilen werden aber ohnehin nicht gelöscht :-(

ich habe jetzt auch mal das model gegen einen vector getausch, hat aber auch nichts gebracht.

Zeig mal, wie Du's machst.

Du musst eigentlich nur deine while-Schleife durch den Timer/TimerTask ersetzen und per schedule das ganze starten.

Code:
    final DefaultListModel model = new DefaultListModel();
    JList list = new JList(model);

// jetzt hole ich mir die daten aus der txt-datei
    model.addElement(line);

//es wird dann alles korrekt angezeigt.

//dann arbeite ich die liste ab

//    int x = model.getSize(); // WERDEN NICHT MEHR GEBRAUCHT
//    int y = 0; // WERDEN NICHT MEHR GEBRAUCHT

// NEU
    final java.util.Timer timer = new java.util.Timer();
    final TimerTask task = new TimerTask() {
      public void run() {
        model.remove(model.size() - 1);
        if ( model.size() == 0 ) {
          this.cancel();
        }
      }
    };
    timer.schedule(task, 2500, 1500);

// KANN WEG
//    while(y < x)
//    {
//      String str = (String) model.elementAt(y);
//
//      // hier kommt unwichtiger code
//
//      model.removeElementAt(y);
//      --x;
//
//      // hier kommt noch ein thread.sleep von paar sek
//    }
 

Oni

Top Contributor
ach so

das test ich gerade mal.

ich hatte den timer/timertask in die whileschleife gebaut. klar das das dann nicht geht ;-)
 

Oni

Top Contributor
juhu es klappt *g*

DANKE für die zeit die ihr geopfert habt.
Code:
   Vector v = new Vector();
    JList list = new JList();

// jetzt hole ich mir die daten aus der txt-datei
    v.addElement(line);
    list.setListData(v);

//es wird dann alles korrekt angezeigt.

//dann arbeite ich die liste ab

    final java.util.Timer timer = new java.util.Timer();
    final TimerTask task = new TimerTask() {
      public void run() {
        int zahl = v.size()-1;
        String str = (String)v.elementAt(zahl);
        .....
        
          //unwichtig
        .....
        v.remove(zahl);
        list.setListData(v); // OHNE DAS GING ES NICHT
        if ( model.size() == 0 ) {
          this.cancel();
        }
      }
    };
    timer.schedule(task, 0, time);// vom benutzer steuerbar
 

Sky

Top Contributor
Mach'n Hacken dran (unten links)

btw. die Lösung mit dem Model und Timer/Timertask hätte auch funktioniert... ist aber auch so in Ordnung.
 

Oni

Top Contributor
mir ist noch ne frage eingefallen, vielleicht kannst mir die ja noch schnell beantowrten bevor ich den haken setze.

ich habe bisher ja immer nur eine txt geladen. habe mir jetzt aber überlegt das ich zwischen mehreren txt wählen möchte. über eine JComboBox.

gibt es eine möglichkeit das verzeichnis in dem das programm liegt zu scannen wieviel txt datei da sind?

z.B. in dem ordner liegen liste1.txt, liste2.txt. und liste3.txt und ich möchte dann zwischen den in der combobox wählen.
wenn jetzt beim nächsten programmstart eine 4 liste im ordner ist soll die automatisch auch angezeigt werden. gibt es sowas?

ansonst belege ich die combobox einfach vor mit z.B. 10 listen und wenn die halt nicht im ordner sind hat der benutzer dann pech gehabt.

ich hoffe die frage war halbwegs verständlich.
 

Oni

Top Contributor
ich dachte man könnte hier nicht mehr antworten wenn ich den hacken setze deswegen habe ich die frage nochmal gestellt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
G kann nicht auf meine JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
RedEagle Swing JTextArea ist leer AWT, Swing, JavaFX & SWT 13
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
K Swing 2 JTextArea parrallel scrollable AWT, Swing, JavaFX & SWT 16
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Bluedaishi JtextArea AWT, Swing, JavaFX & SWT 6
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
F JTextarea Steuern ~ consolenanbindung AWT, Swing, JavaFX & SWT 5
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
F JTextArea hat keinen Rahmen AWT, Swing, JavaFX & SWT 10
N JTextArea Events weiterleiten AWT, Swing, JavaFX & SWT 3
R JTextArea mit verschiedenen Textfarben AWT, Swing, JavaFX & SWT 6
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
HoloYoitsu jTextArea.setCaretPosition(); What am I doing wrong? AWT, Swing, JavaFX & SWT 0
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
M JTextArea - Leertaste "sperren" AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
M Swing JTextArea mit ScrollBar AWT, Swing, JavaFX & SWT 9
S Swing Zahl der Zeilenumbrüche in einer JTextArea bestimmen AWT, Swing, JavaFX & SWT 1
F Swing Caret in JTextArea vergrößern AWT, Swing, JavaFX & SWT 2
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
N JFrame änliches wie JTextArea? AWT, Swing, JavaFX & SWT 2
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
O JTextArea befüllen AWT, Swing, JavaFX & SWT 2
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
M JTextArea Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
C JTextArea scrollt bei append(String) aus Threads nicht ans Ende AWT, Swing, JavaFX & SWT 7
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
Hoppelmann Swing Tasten in JTextArea blockieren AWT, Swing, JavaFX & SWT 2
S JTextArea Tastaturanschläge AWT, Swing, JavaFX & SWT 2
E Swing JTextArea in JFrame, wie nun WindowFocusListener implementieren? AWT, Swing, JavaFX & SWT 2
S Problem mit JButton und JTextArea AWT, Swing, JavaFX & SWT 2
J Swing Mitwachsende JTextArea+ JPanel AWT, Swing, JavaFX & SWT 4
P Swing JtextArea füllen mit setText AWT, Swing, JavaFX & SWT 7
M Probleme mit der Selektion einer JTextArea AWT, Swing, JavaFX & SWT 3
T Die Größe einer JTextArea an Ihren Parent JPanel anpassen. AWT, Swing, JavaFX & SWT 5
hdi Swing ListCellRenderer + JTextArea + LineWrap AWT, Swing, JavaFX & SWT 6
T ComponentOrientation in JTextArea AWT, Swing, JavaFX & SWT 3
H Hintergrundbild in jTextArea AWT, Swing, JavaFX & SWT 4
G Swing JTextArea mit fester Anzahl Spalten! AWT, Swing, JavaFX & SWT 10
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
L JTextArea mit JScrollPane AWT, Swing, JavaFX & SWT 7
padde479 Swing replace JTextArea funktioniert nicht AWT, Swing, JavaFX & SWT 2
L Zeilenumbrüche aus JTextArea MIT in Textdatei schreiben AWT, Swing, JavaFX & SWT 4
_dp jTextArea/jTextPanel Auto Höhe AWT, Swing, JavaFX & SWT 5
Ollek JTextArea - Feste Zeilenanzahl(8 Zeilen) AWT, Swing, JavaFX & SWT 3
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
Ollek Text in JTextField und JTextArea zur Laufzeit ändern AWT, Swing, JavaFX & SWT 6
P Datenelement anderer Klasse in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
P Scrollbar JTextArea AWT, Swing, JavaFX & SWT 23
M Swing Ausgabe in JTextArea verzögern AWT, Swing, JavaFX & SWT 7
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
S System.out in JTextArea AWT, Swing, JavaFX & SWT 4
S Swing JTextArea - Bild auf/ab Tasten implementieren AWT, Swing, JavaFX & SWT 4
J JTextArea verschwindet bei resize vom JFrame AWT, Swing, JavaFX & SWT 2
VfL_Freak "setAccelerator/KeyStroke" bei JTextArea ? AWT, Swing, JavaFX & SWT 6
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
Dit_ JTextArea zu Zeile X scrollen AWT, Swing, JavaFX & SWT 4
H variable Höhe einer JTextArea (als Renderer/Editor) als Zelle einer JTable AWT, Swing, JavaFX & SWT 9
B Wechsel JTextArea und JComponent AWT, Swing, JavaFX & SWT 9
M [erledigt] Bestimmte Zeile aus JTextArea löschen AWT, Swing, JavaFX & SWT 3
G Swing JTable und JTextArea synchronisieren AWT, Swing, JavaFX & SWT 2
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
M JTextArea AWT, Swing, JavaFX & SWT 2
E Swing JTextArea Alternative? AWT, Swing, JavaFX & SWT 5
A Swing JTextArea über Frame hinaus anzeigen? AWT, Swing, JavaFX & SWT 2
S JInternalFrame oder JTextArea neu laden AWT, Swing, JavaFX & SWT 2
N JTextArea.setLineWrap Bug? AWT, Swing, JavaFX & SWT 3
G Swing JTextArea/JScrollpane: JScrollbar position AWT, Swing, JavaFX & SWT 8
I JTextArea mit Copy Paste Funktion AWT, Swing, JavaFX & SWT 7
M Swing JTextArea größe anpassen & setBackground liefer Nullpointer AWT, Swing, JavaFX & SWT 4
Plastagen JTextArea CaretPosition Aktualisierung AWT, Swing, JavaFX & SWT 10
C JTextField und JTextArea - Verständnisproblem AWT, Swing, JavaFX & SWT 14
B Exceptions werfen und in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
F new Line in JTextarea AWT, Swing, JavaFX & SWT 15
X Problem bei JTextArea und Thread.sleep() AWT, Swing, JavaFX & SWT 8
J Beliebtes Problem: Scrollbar in JTextArea AWT, Swing, JavaFX & SWT 4
w0ddes Swing JTextArea auf JScrollPane - Autoscroll?! AWT, Swing, JavaFX & SWT 2
Developer_X Swing Java JTextArea auto scroll down AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben