javaのprocessKeyEvent


KeyEventの使い方がわかりません。  
下記のコードを実行すると

enableEvents(long)はComponentでprotectedアクセスされます

と、エラーがでます。

初歩的な質問だと思いますが検索してもわからず質問しました。  
どのように記述したらいいでしょうか。知恵を貸してください・・・

[code]

    public class Sample
    {
      public static void main (String[] args){
        javax.swing.JFrame.enableEvents(java.awt.AWTEvent.KEY_EVENT_MASK);
      }
      protected void processKeyEvent(java.awt.event.KeyEvent e){
        System.out.println("キーが押されました");
      }
    }
    
[/code]




`KeyEvent`は、コンポーネントに[KeyListener](https://docs.oracle.com/javase/8/docs/api/java/awt/event/KeyListener.html)を追加し、大抵の場合そこで使用します。

詳しくは、チュートリアルの[How to Write a Key Listener (The Java™ Tutorials > Creating a
GUI With JFC/Swing > Writing Event
Listeners)](https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html)が参考になると思います。

[code]

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class KeyEventTest {
      public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
          JFrame f = new JFrame();
          f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
          f.addKeyListener(new KeyListener() {
            @Override public void keyPressed(KeyEvent e) {
              System.out.println("キーが押されたときに呼び出されます。" + e);
            }
            @Override public void keyReleased(KeyEvent e) {
              System.out.println("キーが離されたときに呼び出されます。" + e);
            }
            @Override public void keyTyped(KeyEvent e) {
              System.out.println("キーがタイプされたときに呼び出されます。" + e);
            }
          });
          f.setSize(320, 240);
          f.setLocationRelativeTo(null);
          f.setVisible(true);
        });
      }
    }
    
[/code]

