Refresh JTextArea

MrZylinder

Aktives Mitglied
Hallo Forum ich hab folgendes Problem,

ich lese eine Datei aus und geb sie in einer JTextArea aus.
Ich möchste das sich die TextArea alle paar sekunden refresht wird... folgenden code hab ich bereits:

Java:
try {
		list1 = new ArrayList<String>();
		sb = new StringBuilder();
		PopUpTest2 db = new PopUpTest2();
		
		final String pfad = JOptionPane.showInputDialog(frame,"Pfad zur status.dat: ");
		String hosts = JOptionPane.showInputDialog(frame,"Wie viel Hosts werden benutzt: ");
		final int eingabeAnzahl = Integer.parseInt(hosts);
		
		ScheduledExecutorService executor=Executors.newScheduledThreadPool(1);
		executor.scheduleWithFixedDelay(new Runnable(){
		    public void run()  {
		    	try {
		    		
		    		BufferedReader br = new BufferedReader(new FileReader(pfad));
		    		int anzahlStatus = 0;
		    		String lesen = br.readLine();
		    		
		    		while((lesen = br.readLine()) != null && anzahlStatus < eingabeAnzahl) 
		    		{
		    			if(lesen.contains("host_name="))
		    			{
		    				list1.add(lesen);
		    			}	
		    			if(lesen.contains("current_state="))
		    			{
		    				anzahlStatus++;
		    			}
		    			if(lesen.contains("current_state=0"))
		    			{
		    				list1.add(", OK");
		    				list1.add("\r\n");
					
		    			}
		    			if(lesen.contains("current_state=1"))
		    			{
		    				list1.add(", WARNING");
		    				list1.add("\r\n");
		    			}
		    			if(lesen.contains("current_state=2"))
		    			{
		    				list1.add(", CRITICAL");
		    				list1.add("\r\n");
		    			}
		    			if(lesen.contains("current_state=3"))
		    			{
		    				list1.add(", UNKNOWN");
		    				list1.add("\r\n");
		    			}
		    			
					}
		    		
		    	}
		    	catch (FileNotFoundException e) 
		    	{
		    			JOptionPane.showMessageDialog(frame,"Datei wurde nicht gefunden!");
		    	} 
		    	catch (IOException e) 
		    	{
					
					e.printStackTrace();
				}
		    	
		        SwingUtilities.invokeLater(new Runnable(){
		        	public void run() {	        		
		            	for(int i=0;i<list1.size();i++)
		    			{
		    				ta.append(list1.get(i));
		    			}
		            	
		            }
		        });
		    }
		},0, 1, TimeUnit.SECONDS);
	} 
	finally {
		
	}
(Hier nur Testweise jede Sekunde)
Folgendes passiert:
Ich bekomm eine Ausgabe und die nächste Ausgabe wird darunter egschrieben ich will das abe so haben das das alte gelöscht wird und das neue eingefügt wird.
Ich hab es schon mit ta.setText(""); versucht aber das klappt nicht. Gibts es noch eine andere möglichkeit?
Des Weiteren: Weiß jmd warum ich das finally brauch?
 
Und das findet man sehr schnell zu finally:
7.1.6 Abschließende Arbeiten mit finally

Nach einem (oder mehreren) catch kann optional ein finally-Block folgen. Die Anweisungen im finally-Block werden immer ausgeführt, auch wenn in try und catch ein return, break oder continue steht. Das heißt, der Block wird auf jeden Fall ausgeführt. Eine typische Anwendung ist die Freigabe von Ressourcen oder das Schließen von Dateien.
 
das mit ta.setText(""); verstehe ich selbst nicht.... Ich finde das in jedem Forum....aber ich bekomms net hin...egal wie ich es wende und drehe.

Zu Finally...genau das hab ich auch schon gelesen.
Nach einem (oder mehreren) catch kann optional ein finally-Block folgen.

Da steht optional...Hab auch gelesen das so ein finally block NICHT folgen muss. Hab sowas auch noch nicht gebraucht. Wenn ich finally wegmache meckert Eclipse. "Mach verdammt nochmal ein finally hin!!!!" =)
Mach ich es hin ist es gut. Aber bringt ja gar nix weil ein "leeres" finally da steht.
 
Wo hast / hattest du den dein
Code:
ta.setText("");
stehen, vielleicht können wir dir dann helfen, wenn du uns da keine hilfe gibst, können wir dir auch nicht helfen, wurdest ja ein paar mal schon gefragt, sonst probiere die von mir geposte variante mal
 
Vielleicht will eclipse dass du deinen reader schließt. Btw, jede Sekunde ein File auszulesen ist eine ziemlich dämliche Aufgabe. Was soll das für einen Zweck haben? Soll da ein anderes Programm derweil Änderungen machen? Dann könntest du aber Probleme mit dem gleichzeitigen lesen/schreiben bekommen.
 
Zuletzt bearbeitet:
Ich hab das ta.setText("");

Vor dem ersten run() gemacht.
Vor die While-Schleife.
Nach der While-Schleife.
Nach den beiden Catch.
Vor dem 2. run().
Nach der For-Schleife.

Das hat alles nix gebracht.
 
Was mir einfällt/auffält, hast du mal deine Liste wieder gelehrt, nicht nur das jTextarea? du musst beides leeren =)
 

Zurück
Oben