En el modo de renderización pasiva, se pueden usar las interfaces KeyListener
y ActionListener
para manejar eventos del usuario.¿Cómo manejar eventos desde el teclado y el mouse en modo exclusivo de pantalla completa en Java?
¿Cuál es la forma correcta de manejo de eventos en modo de pantalla completa? Por favor extender este esqueleto que proporciona la implementación de clic del ratón y eventos de pulsación de teclas, por favor no hinchar tu ejemplo (el ejemplo se inicia el modo de pantalla completa exclusiva, usando un Timer
para actualizar los gráficos en la ventana):
import java.applet.Applet;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
import javax.swing.Timer;
public class applet extends Applet
{
Timer timer;
JFrame frame;
DisplayMode[] displayModes = new DisplayMode[] {
new DisplayMode(1280, 800, 32, 60)
};
BufferStrategy bufferStrategy;
Rectangle bounds;
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
public void init()
{
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); //displays, fonts, color shemes...
GraphicsDevice device = env.getDefaultScreenDevice(); //for one-display systems
setIgnoreRepaint(true);
GraphicsConfiguration gc = device.getDefaultConfiguration();
frame = new JFrame(gc);
device.setFullScreenWindow(frame);
if (device.isDisplayChangeSupported())
device.setDisplayMode(displayModes[0]);
frame.createBufferStrategy(2);
bufferStrategy = frame.getBufferStrategy();
timer = new Timer(1000/50, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Graphics2D g = null;
try {
g = (Graphics2D) bufferStrategy.getDrawGraphics();
render(g);
} finally {
g.dispose();
}
bufferStrategy.show();
}
});
}
private void render(Graphics2D g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, bounds.width, bounds.height);
}
public void start()
{
timer.start();
}
public void stop()
{
timer.stop();
}
}
¡Gracias por la respuesta! ¿Podría también proporcionar el mismo ejemplo, pero como applet de Java? Quería que el ejemplo fuera un applet de Java, pero parece que olvidé incluir eso en la primera publicación ... Creo que solo necesitas hacer pequeñas adiciones/cambios en el código que proporcionaste, te lo agradeceré mucho si lo haces , porque tu ejemplo es muy bueno para estudiar! – Vadim
Sugeriría 'JApplet', pero probablemente tendría que estar [signed] (http://download.oracle.com/javase/tutorial/deployment/applet/security.html) por seguridad. Puede probarlo utilizando un enfoque híbrido que se muestra [aquí] (https://sites.google.com/site/drjohnbmatthews/subway); [tag: java-web-start] sería una mejor estrategia de implementación. – trashgod
¡Gracias, lo revisaré! – Vadim