Link to home
Start Free TrialLog in
Avatar of jsuttor
jsuttor

asked on

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();
       
    }    
}
ASKER CERTIFIED SOLUTION
Avatar of StillUnAware
StillUnAware
Flag of Lithuania image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of jsuttor
jsuttor

ASKER

Sweet Thanks!