Swingを使って電卓を作っています。これまで、BorderLayoutを備えたJFrameで構成されるGUIを作成し、その中央に、JLabel(電卓の画面を表す)といくつかのJButton(キーを表す)を持つJPanelを配置しました。
電卓がキーボードから直接入力を受信できるようにしたいので、JFrameを拡張するクラスにメソッドaddKeyListenerを含め、KeyListenerを実装するクラスのオブジェクトへの参照を引数として配置しました。
アプリケーションを実行すると、JButtonの1つをクリックするまで、キーボード入力を受け入れます。その後、キーボードの使用は機能しなくなります。
問題はフォーカスにあると思いますが、アプリケーションの任意の場所をクリックして修正できる問題ではありません。次のコードを追加しました。
setFocusable(true);
JFrameに追加しましたが、役に立ちませんでした。Key Bindingsを使用する方が、KeyListenerを使用するよりも優れたオプションである可能性があることを読みましたが、このアプローチについてはよくわかりません。