0

我有以下 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 文件时,我只得到一个空屏幕。但是,如果我将普通字符串插入 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() 中的事实有关吗?谢谢你。

4

3 回答 3

0

我怀疑您的 telnet 客户端库需要以某种方式刷新接收到的输出sendCommand()。目前看起来你StringBuffer是空的。

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

于 2013-01-28T11:33:38.170 回答
0

我不能 100% 确定您的 AutomatedTelnetLibrary 是什么,但我在Google 代码中找到了一个似乎与您的格式相匹配的内容。如果这不是您使用的,请发布您使用的。

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

底线是,sendCommand 返回一个字符串,您将其设置为未初始化的 StringBuffer。结果,我认为您的 StringBuffer 初始化不正确。我真的很惊讶这段代码可以编译......试试这个:

StringBuffer text = new StringBuffer(telnetClient.sendCommand("display gps"));
于 2013-01-28T11:41:44.150 回答
0

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

new Runnabled(){
public void run(){ 
     //call your method here 
  } 
}
于 2013-01-28T11:37:38.170 回答