Java 如何使角色出现在画布上

Java 如何使角色出现在画布上,java,Java,复制并修改画布以实现KeyListener接口,将其自身添加为自己的KeyListener,并调用setFocusabletrue以接收键盘焦点。键入键时,程序应在画布上最后一个鼠标事件的位置绘制相应的字符see KeyEvent.getKeyChar。如果在未单击鼠标的情况下键入另一个键,则将下一个字符绘制到 上一个字段的右侧,就像在文本字段中键入一样。再一次,想想你需要保持什么样的状态才能做到这一点。它不一定是完美的,你可以硬编码字符的宽度,如果你喜欢的话 import java.awt

复制并修改画布以实现KeyListener接口,将其自身添加为自己的KeyListener,并调用setFocusabletrue以接收键盘焦点。键入键时,程序应在画布上最后一个鼠标事件的位置绘制相应的字符see KeyEvent.getKeyChar。如果在未单击鼠标的情况下键入另一个键,则将下一个字符绘制到 上一个字段的右侧,就像在文本字段中键入一样。再一次,想想你需要保持什么样的状态才能做到这一点。它不一定是完美的,你可以硬编码字符的宽度,如果你喜欢的话

  import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.JComponent;
    import javax.swing.JFrame;


    public class Canvas05 extends JComponent implements KeyListener {


          public Canvas05() {

              addKeyListener(this);
              setFocusable(true);

            }

        @Override
        public void keyTyped(KeyEvent e) {

            System.out.print(e.getKeyChar());
        }

        @Override
        public void keyPressed(KeyEvent e) {


        }

        @Override
        public void keyReleased(KeyEvent e) {


        }

        public static void main (String[] args){

            Canvas05 c = new Canvas05();

            JFrame frame = new JFrame("Q05");
            frame.add(c);

            frame.setSize(400, 400);

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            frame.setVisible(true);
        }

    }

给你。mouseEvent中的位置很容易从MouseListener事件中获取,在该事件中,您可以从中声明x和y变量

MouseListener.getX和MouseListener.getY

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Game extends JPanel{

public static int WIDTH = 500,HEIGHT = 500;
public static char myChar = ' ';
public static Game game = new Game();
public static JFrame frame = new JFrame();

public Game() {
    this.addKeyListener(new KeyListener(){

        public void keyPressed(KeyEvent e) {
            myChar = (char)e.getKeyCode();
            repaint();

        }

        @Override
        public void keyReleased(KeyEvent arg0) {

        }

        @Override
        public void keyTyped(KeyEvent arg0) {
            // TODO Auto-generated method stub

        }

    });

    setFocusable(true);
}

public void paint(Graphics g){
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;

    g.clearRect(0, 0, WIDTH, HEIGHT);

    g.setColor(Color.red);
    g.setFont(new Font("Cambria",Font.BOLD,30));
    g.drawString(String.valueOf(myChar),100, 100);

}

public static void main(String [] args){

    frame.add(game);
    frame.setSize(WIDTH, HEIGHT);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

}