В режиме пассивного рендеринга можно использовать интерфейсы KeyListener и ActionListener для обработки событий от пользователя.
Каков правильный способ обработки событий в полноэкранном режиме? Пожалуйста, расширьте этот скелет, обеспечивающий реализацию для щелчка мыши и нажатия клавиш, пожалуйста, не раздувайте ваш пример (пример запускает полноэкранный эксклюзивный режим, используя Timer для обновления графики в окне):
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();
    }
}


