没有注册键盘输入的Java图形全屏模式 [英] Java Graphics Full Screen Mode not Registering Keyboard Input

查看:232
本文介绍了没有注册键盘输入的Java图形全屏模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想写一个全屏幕应用程序,采用键盘输入。我试着加入keylisteners我的JFrame,现在到JFrame内的画布,设置它们既作为可成为焦点,但它似乎并没有在所有注册任何东西。是否有一些特别的东西我已经在全屏模式下做得到它我的登记的KeyEvent?任何帮助非常AP preciated。 (显示器仅仅是JFrame的一个扩展,不改变还)

 公共类chanceCore实现Runnable,的KeyListener,MouseListener的{布尔isRunning = TRUE;
显示帧;
帆布油画;
GraphicsDevice的装置;
GraphicsEnvironment中的环境;公共chanceCore(){
    建立();
    跑();
}公共无效设置(){
    帧=新的显示(CGE);
    帆布=新的Canvas();
    。frame.getContentPane()加(画布);
    frame.setUndecorated(真);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    canvas.addKeyListener(本);
    canvas.addMouseListener(本);
    canvas.setFocusable(真);
    frame.setVisible(真);
    环境= GraphicsEnvironment.getLocalGraphicsEnvironment();
    设备= environment.getDefaultScreenDevice();
    device.setFullScreenWindow(架);}@覆盖
公共无效的run(){
    而(isRunning){
        画(canvas.getGraphics());
        尝试{
            视频下载(200);
        }赶上(例外前){
            ex.printStackTrace();
        }
    }
}公共无效抽奖(图形G){
    g.setColor(Color.BLUE);
    g.fillRect(0,0,frame.getWidth(),frame.getHeight());
}@覆盖
公共无效键pressed(KeyEvent的E){
   的System.out.println(e.getKey code());
}


解决方案

试试这个code。调用的setFullScreenMode()后,只需添加这两条线。
当我们进入全屏不顺心的事,

  frame.setVisible(假);
frame.setVisible(真);

I'm trying to write a full screen application that takes keyboard inputs. I've tried adding keylisteners to my JFrame and now to a canvas within the JFrame and setting them both as focusable but it doesn't seem to be registering anything at all. Is there something special I have do to in full screen mode to get it to register my keyEvents? Any help greatly appreciated. (display is just an extension of JFrame with no changes yet)

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());
}

解决方案

Try this code. After calling setFullScreenMode(), just add these two lines. When we enter full screen something goes wrong,

frame.setVisible(false);
frame.setVisible(true);

这篇关于没有注册键盘输入的Java图形全屏模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆