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/ques[...]stem-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, botów: 0