4

このコードを使用して、jLable のアイコンとして配置された画像の X 座標と Y 座標を取得しています。座標を取得するこの方法は、この質問への回答によって提案されました。

private void lblMapMouseClicked(java.awt.event.MouseEvent evt) {                                    
            lblMap.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    double X = e.getX();
                    double Y = e.getY();
                    System.out.println("X: " + X + "Y: " + Y );
                }
            });
    }   

実行すると、これpublic void mouseClicked(MouseEvent e) { }が複数回呼び出されます。まさに私が画像をクリックした回数です。

例: 3 回目にクリックすると、System.out.println行の X 値と Y 値が 3 回印刷されます。

そして、クリック回数が増えるごとに増えていきます。なぜこれが起こるのか説明できますか?どうすれば修正できますか?:)

4

3 に答える 3

6

問題は、ここでクリックが発生したときに新しいリスナーを何度も追加していることです。

private void lblMapMouseClicked(MouseEvent evt) 
{
    lblMap.addMouseListener(new MouseAdapter()
    {
        ...

代わりに、コードをこれに変更してください。

private void lblMapMouseClicked(MouseEvent e)
{
    double X = e.getX();
    double Y = e.getY();
    System.out.println("X: " + X + "Y: " + Y);
}

そして、それは問題を解決するはずです。

お役に立てれば。

于 2013-11-14T15:26:19.153 に答える