【问题标题】:Java Applet SwingUtilities empty screen [duplicate]Java Applet SwingUtilities 空屏 [重复]
【发布时间】:2013-01-25 15:51:00
【问题描述】:

可能重复:
HTML does not display my Java Applet with a JLabel

我有 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 {
//Called when this applet is loaded into the browser.
public void init() {
    //Execute a job on the event-dispatching thread; creating this applet's GUI.
    try {
        SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
                AutomatedTelnetClient telnet = new AutomatedTelnetClient();
                String answer = telnet.request();
                JLabel lbl = new JLabel(answer);
                add(lbl);
            }
        });
    } catch (Exception e) {
        System.err.println("createGUI didn't complete successfully");
    }
}
}

在 AutomatedTelnetClient 类中发出 telnet 请求,一旦获得响应,会话也将关闭。 当我执行 .html 文件时,没有绘制任何内容并且屏幕为空。任何人都知道它为什么会这样。还有其他方法可以将字符串添加到 Applet 中吗?难道问题出在 SwingUtilities 的 inovkeAndWait 上?

这是 HTML:

<HTML>
<HEAD>
</HEAD>
<BODY>
<div >
<APPLET CODE="m2mcom.web.Displaytext.class" WIDTH="800" HEIGHT="500">
</APPLET>
</div>
</BODY>
</HTML>

【问题讨论】:

    标签: java applet


    【解决方案1】:

    尽量不要运行

    AutomatedTelnetClient telnet = new AutomatedTelnetClient();
    

    在 SwingUtilities 线程中。 b/c telnet 请求很可能是异步调用。 尝试不使用线程直接运行上面的代码,看看你得到了什么。

    ---更新---

    另一个问题可能是我下面代码中的最后一行,它将标签添加到您的 applet contentPane 组件。这可能是问题所在。

    如果这两个修复都不起作用,那么您的 AutomatedTelnetClient 类逻辑很可能有问题。

    package m2mcom.web;
    import m2mcom.entities.AutomatedTelnetClient;
    import javax.swing.JApplet;
    import javax.swing.SwingUtilities;
    import javax.swing.JLabel;
    
    public class Displaytext extends JApplet {
    //Called when this applet is loaded into the browser.
    public void init() {
        //Execute a job on the event-dispatching thread; creating this applet's GUI.
        try {
    
                    AutomatedTelnetClient telnet = new AutomatedTelnetClient();
                    String answer = telnet.request();
                    JLabel lbl = new JLabel(answer);
                    getContentPane().add(lbl);
    
    
    
        } catch (Exception e) {
            System.err.println("createGUI didn't complete successfully");
        }
    }
    }
    

    【讨论】:

    • 但我必须以某种方式初始化 AutomatedTelnetClient telnet 以便以后能够调用请求方法
    • 我已经用您可以尝试的代码更新了我的答案。只需运行代码而不使用另一个线程,只使用主小程序初始化线程。请参阅上面的代码,让我知道这是否解决了您的问题。注意最后两行将标签添加到您的小程序。这可能是问题所在。您可以在当前代码中添加这两行代码,看看它是否有效。
    • 我收到错误'找不到符号' for pack();
    • 你不能 pack() 一个小程序,几乎按照定义。大小在 html 中定义。
    猜你喜欢
    • 2011-02-25
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2012-03-19
    • 1970-01-01
    • 2017-03-25
    相关资源
    最近更新 更多