为什么我的程序可以在 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 的一部分分发。
我在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 的一部分分发。