コンポーネントがリスナーを介して他のコンポーネントと通信できるように、swing を使用して GUI インターフェイスを開発しようとしています。私が直面した問題は次のとおりです。
メソッド
- リスナーの実装
- 匿名メソッドを使用したリスナー メソッドでリスナーを追加する
- リスナーを実装するクラスからのリスナーの追加
問題
- リスナーを実装すると、多くのオブジェクトを処理するときにオブジェクトを操作しようとすると混乱が生じます
- コンストラクターが無名メソッドの final を必要とすることを除いて、1 と同じです。
- 静的参照に頼らずにリスニング クラス外のオブジェクトを操作することはできません。
JPanel を mouseListenerClass に渡して操作を行わずに、別の JFrame クラスの一部である JPanel に MouseListenerClass を描画させるにはどうすればよいので、これは本当にイライラします。
私が機能しているように見える唯一の方法は、MouseState と呼ばれる Enum を作成することです。マウス イベント MousePressed が発生すると、静的 Enum mouseStatus が押された状態に設定され、次に JPanel paintComponent メソッドが Enum mouseStatus をチェックし、プレスがあればペイントします。
これは間違った方法のようです。
別の方法はありますか?
Cyrille のコメントを反映して更新:-
@Cyrilleに感謝します。キャストを使用してコードを修正する必要がありましたが、前提は引き続き機能します。' public void mousePressed(MouseEvent e) {
PaintPanel p=(PaintPanel) getTargetPanel();
p.setMousePressed(true);
p.setMouseCoords(e.getPoint());
}
public void mouseReleased(MouseEvent e) {
PaintPanel p=(PaintPanel) getTargetPanel();
p.setMousePressed(false);
}
public JPanel getTargetPanel() {
return targetPanel;
}'