簡體   English   中英

Java輸入不適用於canvas

[英]Java Input wont work with canvas

我正在使用Java制作基本程序。 我得到輸入使用此代碼:

package main;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;

public class Input extends KeyAdapter{
    public void keyPressed(KeyEvent ke){
        _press[ke.getKeyCode()] = true;
        _pressed[ke.getKeyCode()] = true;
    }
    public void keyReleased(KeyEvent ke){
        _press[ke.getKeyCode()] = false;
        _released[ke.getKeyCode()] = true;
    }
    public void update(){
        for (int i = 0; i < _press.length; i ++){
            _pressed[i] = false;
            _released[i] = false;
        }
    }
    /**
     * checks if a key is being pressed
     * @param key an integer representing a key(Key class recommended)
     * @return boolean
     */
    public static boolean check(int key){
        if (_press[key]) return true; else return false;
    }
    /**
     * checks if a key was pressed
     * @param key an integer representing a key(Key class recommended)
     * @return boolean
     */
    public static boolean pressed(int key){
        if (_pressed[key]) return true; else return false;
    }
    /**
     * checks if a key was released
     * @param key an integer representing a key(Key class recommended)
     * @return boolean
     */
    public static boolean released(int key){
        if (_released[key]) return true; else return false;
    }
    protected static boolean[] _press = new boolean[128];
    protected static boolean[] _pressed = new boolean[128];
    protected static boolean[] _released = new boolean[128];
}

我運行測試,我有一個使用ArrayList工作的基本實體系統,一切都很好。

但后來我遇到了圖形。

我設置了一個Jcanvas類(擴展了Canvas),但是在將它添加到我的框架后,圖形將正常工作,但我的輸入根本不再有效。

canvas = new Jcanvas();
canvas.setSize(width, height);
canvas.setBackground(Color.RED);
frame.add(canvas);

//input
frame.addKeyListener(new Input());

有沒有辦法解決這個問題,還是我會陷入圖形或輸入?

這是我的Jcanvas類供參考:

package main;
import java.awt.Canvas;
import java.awt.Graphics;

public class Jcanvas extends Canvas{
    static final long serialVersionUID = 42L;
    public void paint(Graphics g){
    }
    public void drawrect(int x, int y, int width, int height){
        Graphics g = getGraphics();
        //g.setColor(Color.blue);
        g.drawRect(x, y, width, height);
    }
    public void drawfill(Graphics g, int x, int y, int width, int height){
    }
}

嘗試添加:

//input
Input input = new Input();
frame.addKeyListener(input);
canvas.addKeyListener(input);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM