KeyEventDemo

import javax.swing.*;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.*;

public class KeyEventDemo extends JFrame {
    private KeyboardPanel keyboardPanel = new KeyboardPanel();
    
    /** Intitialized UI */
    public KeyEventDemo() {
        // Add the keyboard panel to accept and display user input
        add(keyboardPanel);
        
        // Set focus
        keyboardPanel.setFocusable(true);
    }
    
    /** Main method */
    public static void main(String[] args) {
        KeyEventDemo frame = new KeyEventDemo();
        frame.setTitle("KeyEventDemo");
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null); // Center the frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    
    // Inner class: KeyboardPanel for receiving key input
    static class KeyboardPanel extends JPanel {
        private int x = 100;
        private int y = 100;
        private char keyChar = 'A'; // Default key
        
        /*public KeyboardPanel() {
            addKeyListener(new KeyListener() {
                public void keyTyped(KeyEvent e) {
                    keyChar = e.getKeyChar();
                    repaint();
                }
                
                public void keyPressed(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_UP)
                        y--;
                    else if(e.getKeyCode() == KeyEvent.VK_DOWN)
                        y++;
                    else if(e.getKeyCode() == KeyEvent.VK_LEFT)
                        x--;
                    else if(e.getKeyCode() == KeyEvent.VK_RIGHT)
                        x++;
                    repaint();
                }
                
                public void keyReleased(KeyEvent e) {
                }
            }
                    );
        }*/
        
        
        public KeyboardPanel() {
            addKeyListener(new KeyAdapter() {
                public void keyPressed(KeyEvent e) {
                    switch(e.getKeyCode()) {
                    case KeyEvent.VK_DOWN: y++; break;
                    case KeyEvent.VK_UP: y--; break;
                    case KeyEvent.VK_LEFT: x--; break;
                    case KeyEvent.VK_RIGHT: x++; break;
                    default: keyChar = e.getKeyChar();
                    }
                    repaint();
                }
            }
                    );
        }
        
        /** Draw the character */
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            
            g.setFont(new Font("TimesRoman", Font.PLAIN, 24));
            g.drawString(String.valueOf(keyChar), x, y);
        }
    }
}

你可能感兴趣的:(Java,java,KeyEvent)