Wyświetlanie tekstu w JTextArea

0

Witam, tak jak w temacie mam problem z wyświetlaniem napisów w JTextfield. Dla prostoty tworzą wątek, który odlicza do 10 co 1 sekundę i chcę aby to się pokazywało w polu JtextArea.

private JTextArea txt;
	
	public Worker(JTextArea txt)
	{		
		this.txt = txt;
	}
	
	@Override
	public void run()	{
		
		int i = 0;
		while ( i < 10)
		{
		
		try {
			Thread.sleep(1000);
		} 
		catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("i= "+i);				
			txt.setText(i + "\n");
													
			i++;			
		}						
	}

public class Main extends JFrame
{			
	private static final long serialVersionUID = 1L;
	JPanel window = new JPanel();
	JLabel text;
	JTextArea field;	
	
public Main()
	{
		JFrame	frame = new JFrame("rama");
		
		frame.setLayout(new BorderLayout());
		field = new JTextArea(5,30);
		
		 Worker work = new Worker(field);
		 Thread thread = new Thread(work);
		 thread.start();
		 
		frame.add(field , BorderLayout.CENTER);
						
		text = new JLabel("Output");
		frame.add(text , BorderLayout.NORTH);
		
		frame.pack();
		frame.setSize(300, 400);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		
	}	
		
	public static void main ( String [] args)
	{
				
	SwingUtilities.invokeLater(new Runnable()
	{
		public void run() {
			new Main();						
							
		}
	});

Póki co wyświetla się kolejna odliczana liczba ale cały czas w 1 linijce a chciałbym żeby się wyświetlało tak jak w konsoli. (System.ou.println -> jedna liczba pod drugą). To prowadzi mnie też do problemu jak zrobić żeby pole JTextArea przejęło rolę konsoli ? Czyli żeby tekst wypisywał się w polu JTextArea zamiast w konsoli. Prosiłbym o jakąś pomoc.

0

Może w run() zrób tak:

txt.setText(txt.getText() + i + "\n");
0

No i zadziałało (bez pobrania tekstu txt.getText() nie chciało działać..) A z drugim pytaniem, jest jakiś generalnie sposób na to aby napisy wyświetlały się w polu JTextArea ? Chodziłoby mi o takie przekierowanie wyjścia z konsoli na pole JTextArea...

0

Zobacz ten temat:
http://stackoverflow.com/questions/14706674/system-out-println-to-jtextarea
Ewentualnie tak jak robisz, czyli metoda setText. Ja innego sposobu nie znam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1