我正在设计一个使用java applet的心理学实验。我必须使我的Java小程序全屏。这样做的最佳方式是什么,我该怎么做。

因为我3年没有使用java applets(我上次使用它是为了课程作业:))我忘记了大多数概念。我用Google搜索并发现链接: Dani web

但是在上面链接中描述的方法中,你必须在applet中放置一个JFrame,我不知道该怎么做。

无论我需要一个快速而肮脏的方法,因为我没有太多时间,这就是我在这里问的原因。

提前完成

有帮助吗?

解决方案

我想你想使用WebStart。您可以从浏览器进行部署,但它是一个完整的应用程序。有一些浏览器安全限制,但是,当你正在使用Applet时,我想我可以认为它们不是问题。

其他提示

显而易见的答案是不要使用applet。编写一个使用JFrame或JWindow作为其顶级容器的应用程序。将applet转换为应用程序并不是一项繁重的工作。 Applet旨在嵌入其他东西,通常是一个网页。

如果你已经拥有一个小程序并希望全屏显示,那么有两个快速而又脏的黑客:

1)。如果你知道屏幕分辨率,只需在HTML中将applet参数设置为该大小,然后以全屏模式运行浏览器。

2)。在appletviewer中运行applet,而不是网页,并最大化appletviewer窗口。

为什么不从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上调用按钮侦听器,因此您应该是安全的。

我找到了解决方案这个问题很好。在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();
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top