Have you ever thought of loading text in JTextArea as if a person types. Fine. Let us see this example that demonstrates this.
Start slow!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class SlowLoadText extends JFrame
{
JTextArea jt;
FileInputStream fin;
int k;
public SlowLoadText()
{
// Set frame properties
setTitle("Slow Load Text");
setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
// Create JTextArea
jt=new JTextArea(400,400);
// Set font to JTextArea jt
jt.setFont(new Font("Times New Roman",Font.BOLD,22));
// Set margin to JTextArea jt, so that it does not appear sticked to the border.
jt.setMargin(new Insets(10,10,10,10));
try
{
// Create FileInputStream pointing this file.
fin=new FileInputStream("SlowLoadText.java");
// Create a new thread
new Thread(new Runnable(){
public void run()
{
try
{
// Read and store every byte in k till end of file
while((k=fin.read())!=-1)
{
try
{
// Append a char, string is needed so "" is attached
jt.append(""+(char)k);
// Set caret position to last for the effect
jt.setCaretPosition(jt.getText().length());
// Sleep for sometime for slow effect
Thread.sleep(200);
// read() and Thread.sleep() throws checked exceptions, so that's why..
}catch(Exception e){}
}
}catch(Exception e){}
}
// Start the thread
}).start();
// fin=new FileInputStream("SlowLoadText.java") throws checked exceptions
}catch(Exception e){}
// Create scrollpane for JTextArea jt
JScrollPane js=new JScrollPane(jt);
// Add JScrollPane js to JFrame
add(js);
// Make the frame maximized
setExtendedState(MAXIMIZED_BOTH);
}
public static void main(String args[])
{
new SlowLoadText();
}
}
No comments:
Post a Comment