这适用于不需要此消息的信息亭应用程序。这很奇怪,因为 Mac 在任一浏览器中都没有显示此消息——似乎只发生在 Ubuntu 上。
4 回答
在 Ubuntu 10、Firefox 12 上使用此示例小程序,我能够重现消息“小程序已初始化”,如下所示。它似乎不是来自覆盖的init()
,并且super
实现是空的;我认为这是插件或浏览器本身的功能。奇怪的是,当鼠标光标靠近时,消息实际上从浏览器窗口的一个下角移动到另一个。
对于嵌入式使用,请考虑通过java-web-start 启动小程序(或混合应用程序) ,如示例中所示。
附录:Andrew 的示例产生消息“Applet 已启动”。
这不是您问题的直接答案,但绝对是您问题的可能解决方案(是评论。作为@Andrew Thompson 建议的答案添加):
如果它是一个自助服务终端应用程序,那么为什么会有状态栏呢?如果您可以控制使用应用程序的系统(或安装浏览器的系统),您可以停用浏览器中的状态栏或使浏览器始终以全屏模式显示。
大多数信息亭应用程序都以这种方式运行。
对我来说似乎很无聊,但是如果“状态栏”是指旧浏览器底部的小栏,请尝试在orApplet.showStatus("")
末尾使用。init()
start()
编辑:使用以下命令会产生预期的结果appletviwer
。
$ appletviewer NoMessageApplet.java
代码:
// intended only to show attributes - view in browser
// <applet code='NoMessageApplet' width=400 height=400></applet>
import java.awt.BorderLayout;
import javax.swing.*;
public class NoMessageApplet extends JApplet {
String noMessage = " Nobody Here But Us Chickens..";
JTextArea output;
@Override
public void init() {
try {
SwingUtilities.invokeAndWait( new Runnable() {
public void run() {
initGui();
}
});
} catch(Exception e) {
e.printStackTrace();
}
}
public void initGui() {
JPanel gui = new JPanel(new BorderLayout(5,5));
output = new JTextArea(5,20);
gui.add(new JScrollPane(output));
setContentPane(gui);
setMessage("initGui()" + noMessage);
}
@Override
public void start() {
setMessage("start()" + noMessage);
}
/** Both sets the message as the 'status' message &
appends it to the output control */
public void setMessage(final String message) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
output.append(message + "\n");
}
});
showStatus(message);
}
}
FF13 修复了它(最新版本的 Chrome 也是如此)。两者目前默认情况下都没有启用状态栏(他们在我发布这个初始帖子时启用了)。不完全是一个答案,但一个对我有用的答案。