キー入力をすべて保持する別のクラスをJFrameに追加しようとするたびに、Eclipseはこれを行うように指示します:frame.add(frame, new KeyInput());
、エラーを返します:KeyListenerは常にJFrameに追加しようとするとエラーが表示されます
Exception in thread "main" java.lang.IllegalArgumentException: adding container's parent to itself
。私はこのエラーを理解し、それがどこから来たのか:
frame.add(frame, new KeyInput());
^^^^^
が、私は、フレーム部品を取り出した場合、私はエラーを取得する:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method add(Component) in the type Container is not applicable for the arguments (KeyInput)
私は理解しますが、得ることはありません。この1 gist:Eclipseは実際のエラーを検出しました。
で解決された
KeyListener
の非常に一般的な問題です。コンポーネントを自分自身に追加しようとしているのはなぜですか?私は 'add'メソッドのAPIドキュメントを詳しく見ていきたいと考えています。また、KeyListenerの代わりに[Key Bindings](https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)APIを使用して、プライマリを解決することも検討しますフォーカスに関連する問題 – MadProgrammer@MadProgrammer、私が言及したように、コンポーネントなしで、フレームは私が持っている唯一のものです、私はエラーが発生します。そして、私は既にKey Bindings APIを見てきましたが、私はそれらをどのように使用するのか手がかりがありません。 –
質問はまだ残っていますが、なぜコンポーネントを自分自身に追加しようとしていますか? Javaのように、それは不正な操作です - [キー・リスナーの作成方法](https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html)を読んだことがありますか? )? – MadProgrammer