Java Source - JTextArea Dynamic Write.

JTextArea ngoài chức năng nhập một đoạn văn có nội dùng dài, có thể enter xuống dòng, nó còn là công cụ tốt để hiển thị nhanh nội dung thông tin của ứng dung như một màn hình thông tin, tuy nhiên bạn để ý rằng khi thông tin được thêm vào bởi các vòng lập, hay từ một sự kiển thì nó không ghi liên tục ra, mà phải chờ khi ứng dụng thực thi xong thì mới hoạt động. Đoạn mã sau sẽ giúp giải quyết vấn đề này.



Mã nguồn - Source Code:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package z.test;

/**
 *
 * @author bnson
 * @web vnlives.net
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DynamicWrite implements ActionListener
{
    JFrame frame = new JFrame("TextArea");
    JTextArea tArea = new JTextArea(10,20);
    JButton button = new JButton("Click");
    JScrollPane pane = new JScrollPane(tArea);
    SwingWorker worker;
    String s= "Java is an Object Oriented Programming langauge...Java is static typed language...asbfldfjsdj";//some random String
    public void prepareAndShowGUI()
    {
        Container container = frame.getContentPane();
        container.add(pane);container.add(button,BorderLayout.NORTH);
        tArea.setLineWrap(true);
        tArea.setWrapStyleWord(true) ;
        button.addActionListener(this);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    public void actionPerformed(ActionEvent evt)
    {
        if(evt.getSource()==button)
        {
            tArea.setText("");
            if (worker!=null)
            {
                worker.cancel(true);
            }
            worker = new SwingWorker()
            {
                @Override
                protected Integer doInBackground()//Perform the required GUI update here.
                {
                    try
                    {
                        for(int i = 0;i<s.length();i++)
                        {
                            tArea.append(String.valueOf(s.charAt(i)));
                            Thread.sleep(5);
                        }
                    }catch(Exception ex){}
                    return 0;
                }      
            };
            worker.execute();//Schedules this SwingWorker for execution on a worker thread.
        }
    }  
    public static void main(String st[])
    {
        DynamicWrite dyna = new DynamicWrite();
        dyna.prepareAndShowGUI();
    }
}


Kết quả - Result:




Writer: +Bui Ngoc Son


No comments:

Post a Comment