私のゲーム中のマウスをjavax.swing.JFrame
の中に移動している間、すべてのアニメーションGIF(javax.swing.ImageIcon
はjavax.swing.JLabel
)はマウスの動きが止まるまでアニメーションが停止します。ゲーミングマウスが動いている間にGIFがアニメーションを停止する
このは(ロケット-コネXTDと2台のコンピュータのRazerゲーミングマウスでそれをテストした)MacOSの上のドライバとのゲーミングマウスで発生します。他のマウスを使用すると、すべて正常に動作します。
また、javax.swing.Timer
は、actionPerformed()
メソッドの呼び出しを停止させる。この問題はI opened a thread hereですが、代わりにjava.util.TimerTask
を使用して解決できます。 (編集:実際には、TimerTaskはマウスが動かなくなるまでJFrameが再描画しないので、修正もしません)。
しかし、私はGIFをアニメーション化するための代替手段は見つけませんでした。私は代替案を使用するのではなく、問題を解決することにもっと関心があります。
コード:
MCVE:アプリケーション実行
import java.lang.reflect.InvocationTargetException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
public class Mouse {
public static void main(String[] args) {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
new Mouse();
}
});
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public Mouse() {
JFrame frame = new JFrame();
JLabel label = new JLabel(new ImageIcon(getClass().getResource("waiting.gif")));
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(label);
}
}
import java.lang.reflect.InvocationTargetException;
import java.net.*;
import javax.swing.*;
public class Mouse {
public static void main(String[] args) {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
try {
new Mouse();
} catch (MalformedURLException ex) {
ex.printStackTrace();
}
}
});
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public Mouse() throws MalformedURLException {
JFrame frame = new JFrame();
JLabel label = new JLabel(new ImageIcon(
new URL("https://i.stack.imgur.com/HXCUV.gif")));
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(label);
}
}
[mcve]を編集として追加しました。あなたはMCVEで同じ行動を見ますか? –
それは違いはありません。 – Yakuhzi
うー..ここでうまくいきます。 JREのJavaバージョン/マイクロバージョンをダンプするためのコードをいくつか入れてください。 –