質問

Javaアプレットを使用した心理実験を設計しています。 Javaアプレットをフルスクリーンにする必要があります。これを行うための最良の方法は何ですか、どのようにこれを行うことができます。

Javaアプレットを3年間使用していないので(最後に使用したのはコースの宿題でした:))、ほとんどの概念を忘れてしまいました。私はグーグルでそのリンクを見つけました: ダニウェブ

しかし、上記のリンクで説明した方法では、アプレット内にJFrameを配置する必要がありますが、その方法はわかりません。

手間がかからないため、迅速で汚い方法が必要な場合は何でも、これがここでそれを尋ねた理由です。

事前に感謝

役に立ちましたか?

解決

WebStartを使用したいと思います。ブラウザからデプロイできますが、それ以外は完全なアプリケーションです。ブラウザのようなセキュリティ制限がいくつかありますが、現在アプレットを使用しているので、それらは問題ではないと思います。

他のヒント

明白な答えは、アプレットを使用しないことです。 JFrameまたはJWindowをトップレベルコンテナとして使用するアプリケーションを作成します。アプレットをアプリケーションに変換するのは膨大な作業ではありません。アプレットは、他の何か、通常はWebページに埋め込まれるように設計されています。

すでにアプレットがあり、それを全画面表示にしたい場合、2つの迅速で汚いハックがあります:

1)。画面の解像度がわかっている場合は、HTMLでアプレットパラメータをそのサイズに設定し、ブラウザを全画面モードで実行します。

2)。 Webページではなくappletviewerでアプレットを実行し、appletviewerウィンドウを最大化します。

アプレットから新しいフレームを開き(「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);

忘れないでください:JFrameを作成し、EDTから開く必要があります。アプレットのstart()はそのスレッドで呼び出されることが保証されていないため、SwingUtilities.invokeLater()を使用します。もちろん、ボタンルートを選択した場合、EDTでボタンリスナーが呼び出されるため、安全である必要があります。

解決策を見つけましたこの問題は問題なく機能します。 Linux 64ビット(ChromeおよびFirefox)およびWindows 7 64ビット(ChromeおよびExplorer)でテスト済み

唯一の問題は、アプレットがブラウザのすべてのスペースを使用し、ユーザーが全画面モードをオフにすると、アプレットがブラウザのサイズに拡大縮小されないことです。解決策は、フルスクリーンモードに入る前にアプレットの以前のサイズを保持し、アプレットが通常モードに戻ったときにこのサイズを設定することです。

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