初めて自分の家と他人の家が違う、と意識した時

下記サイトを見ながらデスクトップマスコット作成の勉強をしようとしましたが
JDIMousePressedとJDIMouseDraggedが「シンボルを見つけられません」となってしまいます
https://qiita.com/urado/items/4a810c457cb862e370e8

importの確認や他記事を調べても理解できず、エラーの原因が掴めない状態です
プログラムの改善点と学ぶべき項目について教えてください。

以下プログラム

//インポート
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.event.MouseEvent;


// クラス名 継承 JFrame
public class JDMascot extends JFrame
{
// マスコットイメージ
private JDImage image;
// クリック位置保持用
protected JDPoint clickPoint = new JDPoint( 0, 0 );

public JDMascot()
{
// ウィンドウの設定
setUp();

// イベント設定
setMascotEvent();
}


private void setMascotEvent()
{
// クリックイベント
JDIMousePressed eventSetClickPoint = e -> { eventSetClickPoint(e); };
this.addMouseListener(eventSetClickPoint);

// ドラッグイベント
JDIMouseDragged eventMoveWindowDragged = e -> { eventMoveWindow(e); };
this.addMouseMotionListener(eventMoveWindowDragged);
}



private void eventSetClickPoint(MouseEvent e)
{
// クリック位置:X座標を取得
clickPoint.setX( e.getX() );
// クリック位置:Y座標を取得
clickPoint.setY( e.getY() );
}

// 移動後の座標
private void eventMoveWindow(MouseEvent e)
{
var moveX = e.getXOnScreen() - clickPoint.getX();
var moveY = e.getYOnScreen() - clickPoint.getY();

this.setLocation( moveX, this.getY() );
this.setLocation( this.getX(), moveY );
}


private void setUp()
{
// ウィンドウサイズ
this.setSize( 300, 300 );
// ウィンドウの装飾の( 許可 )
this.setUndecorated( true );
// ウインドウの背景色( コンストラクタ名( 三原色, 透明度 ) )
this.setBackground(new Color( 250, 0, 250, 50) );
// タスクバーのアイコンを非表示
//this.setType( Type.UTILITY );
// 画像表示領域を作成
image = new JDImage();
// ウィンドウのフレームに追加
this.getContentPane().add( image );
// ウインドウを閉じた際JFeameを終了
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}

public void setMascot( BufferedImage image )
{
this.image.setImage( image );
// 画像が変わるので再描画処理
this.repaint();
}

}// class JDMascot_END

A 回答 (1件)

チラ見した程度で全部見てないですが、おそらく自作する必要があります。



「マウスの操作編」ということろで
「JDIMouseClicked.java」を作っているので
記事に沿うなら同じように
「JDIMousePressed.java」
「JDIMouseDragged.java」
を作りましょう。


蛇足ですが、JDIMouseDraggedの方は
MouseListenerではなくMouseMotionListenerを実装します。


該当部分を理解するには以下の知識が必要かと思います。
・MouseListener等を使ったswingのイベント処理の方法
・FunctionalInterface
    • good
    • 0
この回答へのお礼

ありがとう

無事にマウス操作できるようになりました
連休中ずっと悩んでいたので本当にありがとうございます
教えて頂いた部分についても今から勉強します。

お礼日時:2021/08/13 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!