【问题标题】:Instantiate instance of JApplet in JPanel?在 JPanel 中实例化 JApplet 的实例?
【发布时间】:2014-03-25 08:36:41
【问题描述】:

没错,我的队友创建了一个包含倒计时的 JApplet

我必须将他的JApplet 放入一个JPanel/JTab 中(它在一个JFrame 中),来自NetBeans Palette。

简单地说,我有一个包含许多组件的页面,我只希望右上角的倒计时。

使用 netbeans 中的 GUI 构建器,我创建了一个 JPanel 和一个事件。在事件处理程序中,我输入:

private void jPanel1ComponentShown(java.awt.event.ComponentEvent evt) {                                       
    // TODO: Countdown

    Package.Packagename.Countdown.init();
}                                      

我得到的错误信息是:

不能从静态上下文引用非静态方法 init()。

Applet 本身就可以正常工作,我就是不能放在这里。

【问题讨论】:

  • “我必须把他的 JApplet 安装到 JPanel 中” - 自动失败。 JApplet 是顶级容器,不应放在 JPanel 内。但是,您可以获取JApplets组件内容并将它们放入JPanel
  • 您想用计时器打开另一个框架还是将计时器嵌入到面板中?

标签: java swing jpanel japplet


【解决方案1】:

“我必须将他的 JApplet 放入 JPanel 中”

JApplet 是顶级容器,不应放在JPanel 内。但是,您可以将 JApplets 组件内容放入 JPanel

-或-

不要尝试使用您朋友的小程序代码,只需创建您自己的小程序代码即可。实现倒计时真的没那么难。只需手动编码即可。

  1. 将标签拖放到框架的一角 (jLabel)

  2. 然后使用类似的东西

    public class MyFrame extends javax.swing.JFrame {
        int time = 100;
    
        public MyFrame () {
            initComponents();
    
            jLabel.setText(String.valueOf(count));
    
            javax.swing.Timer timer = new javax.swingTimer(1000, new java.awt.event.ActionListener(){
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    if (count == 0) {
                        ((javax.swing.Timer)e.getSource()).stop();
                    } else {
                        count--;
                        jLabel.setText(String.valueOf(count));
                    }
                }
            });
            timer.start();
        }
    }
    

如果您愿意,只需将 Timer 设为班级成员,您可以将其从另一个 actionPerformed 调用到 start()stop()

【讨论】:

  • +1 表示Timer 替代方案;引用了一些混合示例here
【解决方案2】:

Applet 是与桌面应用程序无关的 Web 组件。

创建一个小部件(包含在 JPanel 或其他任何东西中的东西),您将在您的小程序和桌面应用程序中使用它。

【讨论】:

  • 很抱歉,您能否详细说明您将如何执行此操作?在 NetBeans 或 Eclipse 内还是什么的?
  • 那么你需要把你的“倒计时组件”类放到一个单独的“项目”中。您将从其他两个项目(小程序、桌面应用程序)中导入“倒计时组件”项目,这样您就可以在两个项目中重新使用倒计时组件类。
  • @peeskillet 在他的答案的上半部分更好地解释了我在这里提供的解决方案。
猜你喜欢
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
相关资源
最近更新 更多