es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Haga que un juego se visualice a pantalla completa manteniendo la escala para cualquier tipo de pantalla.

Acabo de terminar de hacer mi primer juego en Java y quiero poner mi juego en pantalla completa manteniendo el juego a escala. Estoy usando Swing y ejecutando el juego a través de un JFrame.

¿Cómo debo hacer esto?

package com.game.main;

import java.awt.Canvas;
import java.awt.Dimension;
import java.io.Serial;

import javax.swing.JFrame;

public class Window extends Canvas{
    @Serial
    private static final long serialVersionUID = -1478604005915452565L;

    public Window(int width, int height, String title, Game game) {
        JFrame frame = new JFrame(title);

        frame.setPreferredSize(new Dimension(width,height));
        frame.setMaximumSize(new Dimension(width,height));
        frame.setMinimumSize(new Dimension(width,height));

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.add(game);
        frame.setVisible(true);
        game.start();
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para poner tu juego en pantalla completa y mantenerlo a escala en Java utilizando Swing y ejecutando el juego a través de un JFrame, debes agregar el siguiente código al objeto JFrame:

    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setUndecorated(true);
    

    La primera línea establece el JFrame para maximizar tanto horizontal como verticalmente, haciendo que sea pantalla completa. La segunda línea elimina las decoraciones de la ventana, como la barra de título y los bordes que podrían interferir con tu juego.

    Aquí tienes tu clase Window actualizada:

    package com.game.main;
    
    import java.awt.Canvas;
    import java.awt.Dimension;
    import java.io.Serial;
    
    import javax.swing.JFrame;
    
    public class Window extends Canvas{
    
    @Serial
    private static final long serialVersionUID = -1478604005915452565L;
    
    public Window(int width, int height, String title, Game game) {
        JFrame frame = new JFrame(title);
    
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH); //Establecer en pantalla completa
        frame.setUndecorated(true); //Eliminar decoraciones de ventana
    
        frame.setPreferredSize(new Dimension(width,height));
        frame.setMaximumSize(new Dimension(width,height));
        frame.setMinimumSize(new Dimension(width,height));
    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.add(game);
        frame.setVisible(true);
    
        game.start();
    }
    

    Con estos cambios, tu juego debería iniciarse en modo de pantalla completa manteniendo su relación de aspecto.

Comments are closed.