(JSP)在文本域中显示超链接new——applet部分

        这次的applet部分做了很大的修改:

 

package  applet;

import  javax.swing.JApplet;
import  javax.swing.JTextPane;
import  javax.swing.JScrollPane;
import  javax.swing.text.html.HTMLDocument;
import  javax.swing.text.html.HTMLEditorKit;
import  javax.swing.event.HyperlinkListener;
import  javax.swing.event.HyperlinkEvent;

import  java.awt.event.MouseListener;
import  java.awt.event.MouseEvent;

import  java.io.DataInputStream;
import  java.io.DataOutputStream;
import  java.io.IOException;
import  java.net.Socket;
import  java.net.URL;


/**
 * This class is used to define response of communication
 * 
 * 
@author Zenny Chen
 *
 
*/


class  CommunicationProtocol  {
    
static final String OK_RESPONSE = "OK";
    
static final String NG_RESPONSE = "NG";
}



/**
 * This applet is used for a text area that can make some particular
 * strings displayed as hyperlinks. So some components in Java Swing
 * are used.<br>
 * NB:Java swing is really powerful!
 * 
 * 
@author Zenny Chen
 *
 
*/


public   class  TestApplet  extends  JApplet  implements  HyperlinkListener, Runnable, MouseListener  {
    
    
/**
     * Without this, there will be a warning.
     
*/

    
private static final long serialVersionUID = -5281871014922105280L;
    
    
private static final String PARAM_NAME = "func";
    
    
/**
     * client socket
     
*/

    
private Socket sock = null;
    
    
/**
     * the applet running thread
     
*/

    
private Thread thread = null;

    
/**
     * Please see j2se docs
     
*/

    
private HTMLEditorKit edit = null;
    
    
/**
     * Please see j2se docs
     
*/

    
private HTMLDocument doc = null;
    
    
/**
     * Please see j2se docs
     
*/

    
private JTextPane textpane = null;
    
    
/**
     * Please see j2se docs
     
*/

    
private JScrollPane scroll = null;
    
    
/**
     * the URL which is specified by the user when a hyperlink is
     * clicked.
     
*/

    
private volatile String socketURL = null;
    
    
/**
     * Flag that marks whether connecting to the server has failed.
     
*/

    
private volatile boolean isFailed = false;
    
    
/**
     * the port number of the server(hard coded here)
     
*/

    
private final int port = 8079;
    
    
/**
     * the url of the server<br>
     * This will be passed to the applet through JavaScript.
     
*/

    
private String urlname = "";
    
    
/**
     * store the parameter that is defined in HTML <object> tag
     
*/

    
private String param = "";

    
/**
     * Initialize the applet.
     
*/

    
public void init() {
        
        param 
= this.getParameter(PARAM_NAME);
        
        edit 
= new HTMLEditorKit();
        
        doc 
= new HTMLDocument();
        
        textpane 
= new JTextPane(doc);
        
        textpane.setEditorKit(edit);

        scroll 
= new JScrollPane(textpane, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);        
        
        getContentPane().add(scroll);
        
        textpane.setEditable(
false);

        textpane.addHyperlinkListener(
this);
        
        scroll.addMouseListener(
this);

        System.out.println(
"applet initialized");
    }

    
    
/**
     * Start the applet and make it running.
     
*/

    
public void start() {
        System.out.println(
"applet start");
        
        
if(thread == null{
            thread 
= new Thread(this);
            thread.start();
        }

    }

    
    
/**
     * Stop the applet.
     
*/

    
public void stop() {
        
        
try {
            
if(sock != null{
                sock.close();
                sock 
= null;
            }

        }

        
catch(IOException e) {
            System.out.println(
"socket stop exception");
        }

        
        
if(thread != null && thread.isAlive()) {
            Thread.yield();
            thread 
= null;
        }

        
        System.out.println(
"applet stop");
    }

    
    
/**
     * the applet's running method
     * 
     
*/

    
public void run() {
        String s 
= "";
        
        
while(socketURL == null{
            
try {
                Thread.yield();
                Thread.sleep(
800);
            }

            
catch(InterruptedException e) {
                e.printStackTrace();
            }

        }

        
        filterIPAddress();
        
        System.out.println(socketURL);
        
        
do {
            
try {
                
if(isFailed) {
                    Thread.yield();
                    Thread.sleep(
200);
                }

                isFailed 
= false;
                
                sock 
= new Socket(socketURL, port);
                
                DataOutputStream out 
= new DataOutputStream(sock.getOutputStream());   
                DataInputStream in 
= new DataInputStream(sock.getInputStream());
                
                out.writeUTF(param);
                
                String cmd 
= in.readUTF();
                
                
if(cmd == null || cmd.equals(CommunicationProtocol.NG_RESPONSE)) {
                    System.out.println(
"mismatched!");
                    isFailed 
= true;
                    
continue;
                }

            
                System.out.println(
"socket created");
                
                
do {
                    s 
= in.readUTF();
                    Thread.sleep(
200);
                }

                
while(s == null);
            
                System.out.println(s);
            }

            
catch(IOException e) {
                System.out.println(
"Connecting...");
                isFailed 
= true;
            }

            
catch(InterruptedException ee) {
                System.out.println(
"Sleep interrupted");
                isFailed 
= true;
            }

        }

        
while(isFailed);

        textpane.setText(s);
        
        System.out.println(
"applet run over");
        
        
try {
            Thread.sleep(
800);
        }

        
catch(InterruptedException e) {
            
        }

    }

    
    
/**
     * Catch the hyperlink event.
     
*/

    
public void hyperlinkUpdate(HyperlinkEvent e) {
        
        
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
            
            URL url 
= e.getURL();
            
            
if(url == null)
                urlname 
= e.getDescription();
            
else
                getAppletContext().showDocument(url, 
"_blank");
        }

    }

    
    
/**
     * for communicating with JavaScript<br>
     * Transmit the URL of a specified hyperlink to JavaScript.
     * 
@return urlname
     
*/

    
public String getURLName() {
        
return urlname;
    }

    
    
/**
     * for communicating with JavaScript</br>
     * Clear the last URL of a specified hyperlink for the preparation
     * for the next one.
     *    
     
*/

    
public void clearURLName() {
        urlname 
= "";
    }

    
    
/** *//**
     * for communicating with JavaScript<br>
     * Get the server's URL thru JavaScript
     * 
@param href reference to the URL string
     
*/
    
    
public void setSocketURL(String href) {
        socketURL 
= href;
    }

    
    
/**
     * invoked by JavaScript<br>
     * JavaScript invoke this method to judge if the applet failed
     * at connecting with the specified server. If the connection fails,
     * JavaScript will invoke the applet's start() method to make it
     * restart.
     * 
@return isFailed flag
     * 
@deprecated
     
*/

    
public boolean GetIsFailed() {
        
return isFailed;
    }

    
    
/**
     * Filter the IP address of the server.<br>
     * For example: The server URL is: "
http://172.31.25.170:8080.../". 
     * Just extract "172.31.25.170" from the URL above.
     *
     
*/

    
private void filterIPAddress() {
        
        
//if(!socketURL.contains("http"))
        
//    return;
        
        
char[] ch = socketURL.toCharArray();
        
        
int i = "http://".length();
        
int k = 0;
        
        
for(k=i; k<ch.length; k++{
            
if(ch[k] == ':')
                
break;
        }

        
        socketURL 
= String.copyValueOf(ch, i, k-i);
    }

    
    
    
public void mouseClicked(MouseEvent e) {
        System.out.println(
"applet activated!");
        repaint();
    }

    
    
public void mouseEntered(MouseEvent e) {
        System.out.println(
"applet activated!");
        repaint();
    }

    
    
public void mouseExited(MouseEvent e) {
        
    }

    
    
public void mousePressed(MouseEvent e) {
        
    }

    
    
public void mouseReleased(MouseEvent e) {
        
    }

}

 

你可能感兴趣的:(thread,jsp,null,import,applet,deprecated)