StringBuffer到Java Applet中的String

时间:2013-01-28 11:30:03

标签: java string applet stringbuffer

我有以下Java Applet的源代码:

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;

public class Displaytext extends JApplet {

public void init() {
    try {
        AutomatedTelnetClient telnetClient = new AutomatedTelnetClient();
        telnetClient.connect();

        StringBuffer text = telnetClient.sendCommand("display gps");
        telnetClient.disconnect();

        //String answer = "Testing";
        String answer = text.toString();
        JLabel lbl = new JLabel(answer);
        getContentPane().add(lbl);

    } catch (Exception e) {
        System.err.println("createGUI didn't complete successfully");
    }
}
}

当我执行.html文件时,我只得到一个空屏幕。但是,如果我将一个普通的String插入JLabel(“Testing”)而不是将StringBuffer转换为String,我会在屏幕上显示“Testing”一词。我还检查过,StringBuffer文本变量具有telnetClient.sendCommand()方法的相应返回值。以下代码完美无缺:

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import java.util.*;
import java.io.*;

public class Simple {

public static void main(String [] args) {
    try {
        AutomatedTelnetClient telnetClient = new AutomatedTelnetClient();
        telnetClient.connect();

        StringBuffer text = telnetClient.sendCommand("display gps");
        telnetClient.disconnect();
        System.out.println(text.toString());
    } catch (Exception e) {
        System.err.println("Error");
    }
}
}

为什么会这样?这与我在Applet的方法init()中的事实有什么关系吗?谢谢。

3 个答案:

答案 0 :(得分:0)

我怀疑你的telnet客户端库需要在sendCommand()之后以某种方式刷新收到的输出。目前您的StringBuffer似乎是空的。

这与在applet等中运行无关(除非telnet库本身存在applet约束的问题,这总是可能的)

答案 1 :(得分:0)

在init()方法中使用带远程调用的命令不好, 查看applet后尝试这个,最好是在一个线程上。

new Runnabled(){
public void run(){ 
     //call your method here 
  } 
}

答案 2 :(得分:0)

我不是100%肯定您的AutomatedTelnetLibrary是什么,但我发现Google Code中的一个似乎与您的格式匹配。如果这不是您使用的,请发布您使用的内容。

    public String sendCommand(String command) {
            try {
                    write(command);
                    return readUntil(prompt + " ");
            }
            catch (Exception e) {
                    e.printStackTrace();
            }
            return null;
    }

底线是,sendCommand返回一个String,你将它设置为未初始化的StringBuffer。因此,我认为您的StringBuffer没有正确初始化。我真的很惊讶这个代码完全编译...试试这个:

StringBuffer text = new StringBuffer(telnetClient.sendCommand("display gps"));