1

だから私はタイトルバーでドラッグできるウィンドウを作ろうとしています。別のフレーム内にあるため、これを手動で行う必要があります。マウス リスナーのコードは次のようになります。

titleBar.addMouseListener(new MouseAdapter() 
    {
        public void mousePressed(MouseEvent e)
        {
            currentMouseEvent = e;
            dragging = true;
        }
        public void mouseReleased(MouseEvent e)
        {
            dragging = false;
            currentMouseEvent = null;
        }
    });

これが更新ループのコードです。(これは別のスレッドの while ループにあります)

if (dragging)
{
    try
    {
        setPosition(currentMouseEvent.getXOnScreen(), currentMouseEvent.getYOnScreen());
    }
    catch(NullPointerException e)
    {
        //do nothing
        Main.SoundSystem.fatalError();
    }
}

マウスがタイトル バーのどこにあるかを追跡するには、setPosition を変更する必要があることはわかっていますが、これをテストしたかったのです。問題は、マウスをドラッグすると、一度移動し、その後移動しないことです。何故ですか?

4

1 に答える 1

3

を更新しないためcurrentMouseEvent、マウスが押された場所にウィンドウを移動し続けます。

MouseMotionListenerドラッグ中に新しいイベントを取得するには が必要です。

于 2012-06-11T03:20:06.190 に答える