Domanda

Sto progettando un esperimento di psicologia con le applet Java. Devo rendere le mie applet java a schermo intero. Qual è il modo migliore per farlo e come posso farlo.

Da quando non uso applet Java da 3 anni (L'ultima volta che l'ho usato è stato per i compiti di un corso :)) Ho dimenticato la maggior parte dei concetti. Ho cercato su Google e ho trovato quel link: Dani web

Ma nel metodo descritto nel link sopra devi inserire un JFrame nell'applet che non ho idea di come farlo.

Qualunque cosa abbia bisogno di un metodo rapido e sporco perché non ho molto tempo e questo è il motivo per cui l'ho chiesto qui.

Grazie in anticipo

È stato utile?

Soluzione

Penso che tu voglia usare WebStart. È possibile distribuire da un browser, ma in caso contrario si tratta di un'applicazione completa. Ci sono alcune restrizioni di sicurezza da browser, ma, mentre stai usando un'applet al momento, penso di poter presumere che non siano un problema.

Altri suggerimenti

La risposta ovvia è non usare le applet. Scrivere un'applicazione che utilizza JFrame o JWindow come contenitore di livello superiore. Non è un'enorme quantità di lavoro per convertire un'applet in un'applicazione. Le applet sono progettate per essere incorporate in qualcos'altro, in genere una pagina Web.

Se hai già un'applet e vuoi renderlo a schermo intero, ci sono due hack veloci e sporchi:

1). Se conosci la risoluzione dello schermo, imposta i parametri dell'applet su quella dimensione in HTML e quindi esegui il browser in modalità schermo intero.

2). Esegui l'applet in appletviewer, anziché in una pagina Web, e ingrandisci la finestra di appletviewer.

Perché non aprire semplicemente un nuovo Frame dall'applet (o dal metodo " start () " o, preferibilmente, dopo che l'utente preme un pulsante " open ") e impostarlo per massimizzarlo?

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);

Non dimenticare: JFrame deve essere creato e aperto da EDT. L'applet start () non è garantito per essere chiamato su quel thread, quindi usa SwingUtilities.invokeLater (). Ovviamente, se si sceglie il percorso del pulsante, il listener di pulsante viene chiamato sull'EDT, quindi si dovrebbe essere al sicuro.

Ho trovato una soluzione per questo problema che funziona bene. Testato in Linux 64 bit (Chrome e Firefox) e in Windows 7 64 bit (Chrome ed Explorer)

L'unico problema è stato che la mia applet utilizza tutto lo spazio nel browser e quando l'utente disattiva la modalità a schermo intero, l'applet non viene ridimensionata in base alle dimensioni del browser. La soluzione è stata quella di mantenere la dimensione precedente dell'applet prima di entrare in una modalità a schermo intero e quindi, impostare questa dimensione quando l'applet torna alla modalità normale:

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();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top