为什么我的程序可以在 JFrame 上运行,但不能在 JApplet 上运行?

Why my program works on JFrame but not on JApplet?

我在Java中有一个项目(使用Eclipse 开发),其中我使用了一些Swing 组件。一开始,我使用 JFrame:我创建了一个新的 class 继承自 JPanel (PanelTr),在其中添加了我的 JLabels、JTextField 和 JButton,并在我的按钮上添加了一个 ActionListener,并向我的 JFrame 添加了一个对象 PanelTr-遗传 class。这是我的一段代码:

package gui;

public class PanelTr extends JPanel implements ActionListener {

    // Here I instantiate my JTextField and JButton used by ActionListener
    private JTextField textCap = new JTextField(20);
    private JButton submitButton = new JButton("Submit"); 

    public PanelTr() {

        // Here I add my JLabels and my layout manager

        submitButton.addActionListener(this);


}

    public void actionPerformed(ActionEvent evt)
    {
        if (evt.getSource()==submitButton)
        {
            JOptionPane.showMessageDialog(null,"DEBUG"); // Just to see if it is displayed
            String err = Analyzer.process(textCap.getText().toString()); // An analyzing process I use in my program
            if (err=="")
            {
                JOptionPane.showMessageDialog(null,"OK");
            }
            else
            {
                JOptionPane.showMessageDialog(null,err,"Error",JOptionPane.ERROR_MESSAGE);
            }
        }
    }   
}

还有我的 JFrame :

package gui;

public class FrameTr extends JFrame
{
    public FrameTr()
    {
        PanelFils ctn = new PanelFils(); //Conteneur
        setContentPane(ctn);
        ctn.setBackground(new Color(0,255,255));
        setTitle("Project");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String args[])
    {
        new FrameTr();
    }
}

在我的 Analyzer class 中,我使用了位于项目根文件夹中的几个 Excel 文件。

所以使用这段代码,我的程序 运行 在 Eclipse 上很好,当我将它导出到 运行nable jar 时(我将我的 Excel 文件放在同一个文件夹中我的 .jar 文件)。

但现在我需要制作一个允许程序在网络浏览器上 运行 的小程序。所以我用这段代码创建了一个新的基于 JApplet 的 class :

package gui;

public class TestApplet extends JApplet{

    public void init()
    {
        PanelTr ctn = new PanelTr();
        setContentPane(ctn);
    }
}

当我在 Eclipse 上 运行 这个 class 时,显示了我的 debug JOptionPane,但是在分析过程中,我在第一个 Excel 文件。我试图将它移动到 src 文件夹,gui 文件夹,甚至 analyse 文件夹(我的 Analyzer class 的包),但仍然是这个 FileNotFoundException...

我也尝试在网页中 运行 我的程序,所以我导出为 运行nable jar(注意:我无法选择 TestApplet 在我的启动配置中,因为它没有 main(),所以我选择了 FrameTr)。我使用了标签:

<applet archive="app.jar" width="700" height="100" code="gui/TestApplet.class"/>

我的面板显示了,但是当我点击我的按钮时,调试 JOptionPane 没有弹出 !

那么首先,我该如何解决 FileNotFound 问题?然后,为什么我的 JOptionPane 没有显示在我的网络浏览器上?

小程序受到限制,无法访问文件系统(已签名的小程序除外)。

如果你的 jar 中有文件,你可以将它们用作资源。而不是使用例如FileInputStream 使用 this.getClass().getResourceAsStream("/Countries.xlsx")(Countries.xlsx 应该在根目录)

Java 小程序在客户端执行 - 它 运行 在使用该网站的人的计算机上。它不会 运行 在网络服务器上。

如果服务器中有文件,则客户端将无法访问它们,除非您从网络服务器提供这些文件并通过 HTTP(S) 访问它们。

如果文件中的值是常量,那么您应该将文件放入 JAR 中并将它们作为 Applet 的一部分分发。