2010-02-27 21 views
15

¿Cómo harías un JComponent (panel, marco, ventana, etc.) de pantalla completa, de modo que también se superponga a todo en la pantalla, incluida la barra de inicio de Windows?Hacer un panel de Java a pantalla completa

No quiero cambiar la resolución ni nada con el dispositivo gráfico como bitdepth, etc., solo quiero superponer todo lo demás.

+1

¿Qué pasa con las respuestas dadas hasta ahora? – Thomas

+0

Sí, en serio. Entrégalo a Adamski; no obtendrás una mejor respuesta. –

+0

Quiero decir, siempre y cuando no le des ninguna pista sobre lo que no te gusta de las respuestas actuales, nadie podrá (o deseará) pensar en otra cosa. – Thomas

Respuesta

11

Puede probar algunos de los codes in this page, permitiendo un recipiente para llenar la pantalla (lo que no es una solución para un componente individuo, sino por un conjunto de componentes dentro de un recipiente como un JFrame)

public class MainWindow extends JFrame 
{ 
    public MainWindow() 
    { 
    super("Fullscreen"); 
    getContentPane().setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize()); 
    pack(); 
    setResizable(false); 
    show(); 

    SwingUtilities.invokeLater(new Runnable() { 
     public void run() 
     { 
     Point p = new Point(0, 0); 
     SwingUtilities.convertPointToScreen(p, getContentPane()); 
     Point l = getLocation(); 
     l.x -= p.x; 
     l.y -= p.y; 
     setLocation(l); 
     } 
    }); 
    } 
    ... 
} 
+0

¿Puede explicar por qué funciona esto? Específicamente la parte en el ejecutable, como las líneas siguientes 'l.x - = p.x;'. Funciona, pero también quiero comprenderlo completamente. – Connorelsea

+0

@Connorelsea Podría ser más fácil preguntar eso en una pregunta separada: después de 5 años o más, y no recordar todos los detalles. – VonC

17

Consulte this tutorial que describe la API de modo de pantalla completa de Java.

Código de ejemplo (tomado del tutorial). Tenga en cuenta que el código funciona en un Window por lo que deberá incrustar su JPanel con un Window (por ejemplo, JFrame) para poder hacerlo.

GraphicsDevice myDevice; 
Window myWindow; 

try { 
    myDevice.setFullScreenWindow(myWindow); 
    ... 
} finally { 
    myDevice.setFullScreenWindow(null); 
} 
1

Necesitaba buscar mucho, hacer lo mismo. Esta es una versión completamente funcional de ella por pasos, para que pueda encontrarla más tarde también y usarla.

Paso 1: crear un archivo llamado fullscreen.java

Paso 2: copiar el código y pegarlo como es:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class fullscreen extends Window 
{ 
    private Button button; 

    public fullscreen() 
    { 
    super(new Frame()); 
    button = new Button("Close"); 
    button.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
     System.exit(0); 
     } 
    }); 

    setLayout(new FlowLayout()); 
    add(button); 

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    setBounds(0,0,screenSize.width, screenSize.height); 
    } 

    public static void main(String[] args) 
    { 
    // This will take over your whole screen tested and works in my: 
    // Fedora 12/13/14 
    // CentOS 5.0 
    // if this works for you, in other platforms, please leave a comments which OS it worked. 
    // happy coding! 
    new fullscreen().setVisible(true); 
    } 

} 

Paso 3: compilar el código y ejecutar

Hecho.

0

Si yo fuera usted, trataría de hacer que Java no dibuje el borde del Jframe, luego haga que ocupe toda la pantalla.

import java.awt.GraphicsEnvironment; 
import java.awt.Rectangle; 

import javax.swing.JFrame; 


public class FenNoBorder extends JFrame { 

    public FenNoBorder() { 
     setUndecorated(true); 
     setVisible(true); 
     GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds(); 
     setBounds(maximumWindowBounds); 
    } 
} 
Cuestiones relacionadas