【问题标题】:JApplet not running properly in eclipseJApplet 在 Eclipse 中无法正常运行
【发布时间】:2013-01-10 09:45:14
【问题描述】:

我在eclipse中写了一个非常基本的applet程序:

public class SwingAppletDemo extends JApplet {

    private static final long serialVersionUID = -1935096480915162747L;
    JLabel jl;

    public void init() {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    new SwingAppletDemo().makeGUI();
                }
            });
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void makeGUI() {

        jl = new JLabel("Press a button!");

        setLayout(new FlowLayout());

        add(jl);
    }   
}

它编译得很好,然后我通过右键单击SwingAppletDemo.java 将它作为一个小程序运行,然后我选择了Run As > Java Applet

小程序查看器已打开,但其中未显示任何标签。谁能告诉我哪里出错了,我参考了一些教程但找不到必要的信息。

我也尝试在谷歌浏览器中运行它,但也只显示了一个空的小程序。

提前谢谢!

【问题讨论】:

    标签: java eclipse swing applet japplet


    【解决方案1】:

    您正在init 方法中创建一个新的SwingAppletDemo,该方法从未显示。您可以简单地替换:

    new SwingAppletDemo().makeGUI();
    

    makeGUI();
    

    【讨论】:

    • 为此,我必须制作 makeGUI() static 并且我的 gui 不会在 EDT 上创建,然后我将无法调用 add()setLayout() 方法,因为甚至不会创建对象。
    • 无需将makeGUI设为静态,因为您将从init()中的SwingAppletDemo的当前实例调用该方法
    • 是的,现在它工作了,但如何?为什么我使用哪个对象引用很重要?
    • 你需要使用当前已经可见的实例/容器。
    • @SurenderThakran 在调用 init 时,调用 init 的实例是浏览器中显示的实例。如果您创建一个新实例,那么您将不再处理用户正在查看的引用/实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 2019-06-26
    • 2020-08-07
    • 2021-02-09
    相关资源
    最近更新 更多