1

キーボード入力を受け取るフルスクリーン アプリケーションを作成しようとしています。キーリスナーをJFrameに追加し、JFrame内のキャンバスに追加して、両方をフォーカス可能として設定しようとしましたが、何も登録していないようです。keyEvents を登録するために全画面表示モードで何か特別なことをしなければなりませんか? どんな助けでも大歓迎です。(display は JFrame の単なる拡張であり、まだ変更はありません)

public class chanceCore implements Runnable, KeyListener, MouseListener {

boolean isRunning = true;
display frame;
Canvas canvas;
GraphicsDevice device;
GraphicsEnvironment environment;

public chanceCore() {
    setUp();
    run();
}

public void setUp() {
    frame = new display("CGE");
    canvas = new Canvas();
    frame.getContentPane().add(canvas);
    frame.setUndecorated(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    canvas.addKeyListener(this);
    canvas.addMouseListener(this);
    canvas.setFocusable(true);
    frame.setVisible(true);
    environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
    device = environment.getDefaultScreenDevice();
    device.setFullScreenWindow(frame);

}

@Override
public void run() {
    while (isRunning) {
        draw(canvas.getGraphics());
        try {
            Thread.sleep(200);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

public void draw(Graphics g) {
    g.setColor(Color.BLUE);
    g.fillRect(0, 0, frame.getWidth(), frame.getHeight());
}

@Override
public void keyPressed(KeyEvent e) {
   System.out.println(e.getKeyCode());
}
4

1 に答える 1

1

このコードを試してください。setFullScreenMode()を呼び出した後、これらの2行を追加するだけです。全画面表示に入ると、問題が発生します。

frame.setVisible(false);
于 2013-01-16T10:58:11.823 に答える