私はここでJavaを学んでおり、クラスを習得しようとしています。私の小さなゲームのためにマウスイベントなどをキャッチするのに最適な方法ですので、気をつけていくつかヒントを与えてください。マウスイベントハンドリングコードはどこに置くことができますか?しかし、それは途方もなく、オブジェクトを操作できますか?
私のプロジェクトのメインクラスはJFrame
で、構築時にはJPanel
に拡張されたクラスのオブジェクトが追加されます。このJPanel
は全体のウィンドウをカバーしています。これは私がスクリーンにものをペイントするために使用しているものです。次に、私はScene
というクラスを持っていますが、これは何も拡張していませんが、現在のオブジェクトへのすべての参照を画面に保存し、すべてをコンパイルしてJPanel
に戻します。私はJPanelに完全なマウスイベントコードを入れたくありませんでした。なぜなら、私はMEs
と呼ばれる別のクラスを作成し、各シーンに1つを持たせることになりました。私の考えは、このようにして各mes
オブジェクトは各シーンのオブジェクトに簡単にアクセスできます。だから私のコードは次のように探しています:
class DPanel extends JPanel {
Scene scCurrent;
public DPanel() {
scCurrent = new Scene();
addMouseMotionListener(new MouseAdapter() {
public void mouseMoved(MouseEvent me) { scCurrent.mes.moved(me); }
});
...
}
...
もちろん、私も、カーソルを変更する方法がわかりません。そこにはsetCursor()
が認識されません。シーンを切り替える必要があるように、ツリーの上にあるカーソルやアクセスオブジェクトを変更するにはどうすればよいですか?または、JPanelをバンパーアウトしないマウスイベントの処理コードをタックすることができる他の場所がありますか?
おかげで、それは私が必要なアドバイスのようなもののように聞こえます。とてもエレガントでシンプルに聞こえます!しかし、どのようにコントロールクラスにリファレンスを渡すことができますか? 'scCurrent.mes.moved(this、私);のような別の変数として参照を受け入れるようにコントロールクラスを適応させようとすると' this'はmouseadapterを意味します –
@Jimmy_Bob:** edit 1のサンプルコードを見てください* * –
ああ、 'MouseAdapter'を拡張して、あなたがJPanelを独創的にするのと同じレベルで新しいインスタンスを作成するときに参照を与える新しいクラスを作ることで!ありがとう@ホーバークラフトえりなさい、これは今よりはっきりとしています:) –