我正在设计一个使用java applet的心理学实验。我必须使我的Java小程序全屏。这样做的最佳方式是什么,我该怎么做。
因为我已经3年没有使用java applets了(我最后一次使用它是为了课程作业:))我忘记了大多数概念。我用Google搜索并发现链接: Dani web
但是在上面链接中描述的方法中,你必须在applet中放置一个JFrame,我不知道该怎么做。
无论我需要一个快速而肮脏的方法,因为我没有太多时间,这就是我在这里问的原因。
提前完成
答案 0 :(得分:6)
显而易见的答案是不要使用applet。编写一个使用JFrame或JWindow作为其顶级容器的应用程序。将applet转换为应用程序并不是一项繁重的工作。 Applet旨在嵌入其他东西,通常是一个网页。
如果你已经拥有一个小程序并希望全屏显示,那么有两个快速而又脏的黑客:
1)。如果你知道屏幕分辨率,只需在HTML中将applet参数设置为该大小,然后以全屏模式运行浏览器。
2)。在appletviewer中运行applet,而不是网页,并最大化appletviewer窗口。
答案 1 :(得分:5)
为什么不从applet打开一个新的框架(从“start()”方法开始,或者最好在用户按下“打开”按钮后)并将其设置为最大化?
JFrame frame = new JFrame();
//more initialization code here
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(dim.width, dim.height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
不要忘记:应该从EDT创建和打开JFrame。不保证在该线程上调用Applet start(),因此请使用SwingUtilities.invokeLater()。当然,如果您选择按钮路径,则在EDT上调用按钮侦听器,因此您应该是安全的。
答案 2 :(得分:4)
我想你想使用WebStart。您可以从浏览器进行部署,但它是一个完整的应用程序。有一些浏览器安全限制,但是,当你正在使用Applet时,我想我可以认为它们不是问题。
答案 3 :(得分:1)
我发现这个问题的a solution工作正常。在Linux 64位(Chrome和Firefox)和Windows 7 64位(Chrome和资源管理器)中进行了测试
唯一的问题是我的applet使用浏览器中的所有空间,当用户关闭全屏模式时,applet不会缩放到浏览器大小。解决方案是在进入全屏模式之前保持小程序的先前大小,然后在小程序返回正常模式时设置此大小:
public void setFullScreen() {
if (!this.fullscreen) {
size = this.getSize();
if (this.parent == null) {
this.parent = getParent();
}
this.frame = new Frame();
this.frame.setUndecorated(true);
this.frame.add(this);
this.frame.setVisible(true);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = ge.getScreenDevices();
devices[0].setFullScreenWindow(this.frame);
this.fullscreen = true;
} else {
if (this.parent != null) {
this.parent.add(this);
}
if (this.frame != null) {
this.frame.dispose();
}
this.fullscreen = false;
this.setSize(size);
this.revalidate();
}
this.requestFocus();
}