• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 432
  • Last Modified:

Autoscroll! HELP!

Ok I am trying to get the JFrame textarea to autoscroll to the last record written and always scroll to the last record written everytime a new record is written... can someone help me. I am new to JAVA and I am trying to learn but this seems to be beyond me.



import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.*;

public class SockPuppet5000
{
    JTextArea TextArea;
    ServerSocket server;
    Socket client;
    BufferedReader in;
    PrintWriter out;
    String line;
    BufferedWriter fileout;
 
    public SockPuppet5000()
    {

        server = null;
        client = null;
        in = null;
        out = null;
       
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("Sock Puppet 5000");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        TextArea = new JTextArea(time()+" - Application started\n", 20,50);
        TextArea.setEditable(false);
        JScrollPane ScrollPane = new JScrollPane(TextArea);
        frame.getContentPane().add(ScrollPane, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
   
    public void listenSocket()
    {
        ///*
        try
        {
            server = new ServerSocket(9600);
        }
        catch(IOException ioexception)
        {
            TextArea.append(time()+" - Could not listen on port 9600\n");
            System.exit(-1);
        }
        TextArea.append(time()+" - Waiting for socket\n");
        try
        {
            client = server.accept();
        }
        catch(IOException ioexception1)
        {
            TextArea.append(time()+" - Accept failed: 9600\n");
            System.exit(-1);
        }
       
        try
        {
            in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        }
        catch(IOException ioexception2)
        {
            TextArea.append(time()+" - Accept failed: 9600\n");
            System.exit(-1);
        }
        //*/
       
       
        try
        {
        //BufferedReader in = new BufferedReader(new FileReader("input.txt"));
        int c, index=0, end=0;
        int[] chr = new int[10000000];
        char[] filename = new char[256], chrc=new char[1000];
        String  file="";
        boolean data = false;
       
        while (true)
        {
            c = in.read();
            //TextArea.append(String.valueOf(c)+"\n");
            if (c==1)
            {
                data = true;
                c = in.read();
                index=0;
                TextArea.append(time()+" - Reading Stream\n");
            }
            if (c==4)
            {
                data = false;
                end=index;
                //str = "";
                TextArea.append(time()+" - Searching for filename, array size:"+end+"\n");
               
                String str = new String(chrc);
          /*for (index=0; end>index; index++)
                {
                   
                    str=str+String.valueOf((char)chr[index]);
                    //TextArea.append("scanning index:"+index+"\n"); //too slow
                   
                   
                   
                }*/
                //TextArea.append("converted to string\n");
                //TextArea.append("beginning of key:"+str.indexOf("<KEYWORD>")+9+"\n");
                //TextArea.append("end of key:"+str.indexOf("</KEYWORD>")+"\n");
                int beginkey = str.indexOf("<KEYWORD>")+9;
                int endkey = str.indexOf("</KEYWORD>");
                TextArea.append(beginkey+"-"+endkey);
          filename[0]='n';
          filename[1]='o';
                if (endkey>0) str.getChars(beginkey,endkey, filename,0);
                file="";
                for (index=0; endkey-beginkey>index; index++)
                {
                    file=file+filename[index];
                }
                file="./xmlfiles/"+file+".xml";
                TextArea.append(time()+" - Got filename:"+file+"\n");
                try
                {
                    fileout = new BufferedWriter(new FileWriter(file));
                }
                catch (IOException e)
                {
                }
                TextArea.append(time()+" - Writing "+end+" bytes to: "+file+"\n");
                for (index=0; end>index; index++)
                {
                    //TextArea.append(String.valueOf((char)chr[index]));
                    fileout.write(chr[index]);
                   
                }
                fileout.close();
                //TextArea.append("\n");
            }
            if (data)
            {
                if (index<999) chrc[index]= (char)c;
          chr[index++] = c;
         
                //TextArea.append("writing array\n");
            }
                //fileout.write(chr);
           
           
           
        }
        //in.close();
       
        //TextArea.append(time()+" - Stream ended\n");
    }
    catch (IOException e)
    {
    }
    }

    protected void finalize()
    {
        try
        {
            in.close();
            out.close();
            server.close();
            fileout.close();
        }
        catch(IOException ioexception)
        {
            System.out.println(time()+" - Could not close.");
            System.exit(-1);
        }
    }
   
    public String time()
    {
        DateFormat fDateFormat = DateFormat.getTimeInstance (DateFormat.DEFAULT);
        Date now = new Date ();
        return fDateFormat.format (now);
    }
   
    public static void main(String args[])
    {
        SockPuppet5000 puppet = new SockPuppet5000();
        puppet.listenSocket();
       
    }    
}
0
jsuttor
Asked:
jsuttor
1 Solution
 
StillUnAwareCommented:
everytime You append text to textarea, move the curson to the end of text, so that the scrollbar scrolls to the bottom.

To move the cursor do this:

textArea.setCaretPosition(textArea.getText().length());
0
 
jsuttorAuthor Commented:
Sweet Thanks!
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now