Swing/TimerAction のバックアップの現在との差分(No.5)
- category: swing folder: TimerAction title: Timerの使用数を変更 tags: [Timer, Animation] author: aterai pubdate: 2014-04-14T00:48:39+09:00 description: パネルのタイルアニメーションで使用するjava.swing.Timerの数を変更して動作のテストを行います。 image:
概要
概要
パネルのタイルアニメーションで使用するjava.swing.Timer
の数を変更して動作のテストを行います。
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
//Timer: 1, ActionListener: 100
#spanend
#spanadd
// Timer: 1, ActionListener: 100
#spanend
class Tile2 extends JComponent {
private int red;
public Tile2(final Random rnd, Timer timer) {
super();
timer.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
red = rnd.nextInt(255);
repaint();
}
});
}
#spanadd
#spanend
@Override public Dimension getPreferredSize() {
return new Dimension(10, 10);
}
#spanadd
#spanend
@Override protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(new Color(red, 255 - red, 0));
g.fillRect(0, 0, getWidth(), getHeight());
}
}
View in GitHub: Java, Kotlin解説
解説
Timer: 100
-
10x10
個のアニメーション用タイル一つに、Timer
を生成して使用(その為、Timer
も10x10
個存在する) -
JDK 1.7.0_40
以降で低速 -
JDK 1.8.0
は、JDK 1.7.0_25
と同等? -
10x10
個のアニメーション用タイル(JComponent
)一つにそれぞれTimer
を生成して使用(その為Timer
も10x10
個存在する) -
すでに修正済みで上記のサンプルは他と差がないJDK 1.7.0_40
以降で低速 -
JDK 1.8.0
以降はJDK 1.7.0_25
と同等
-
Timer: 1, ActionListener: 100
-
Timer
は1
個、Timer#addActionListener(...)
で、100
個のActionListener
を追加して使用 -
Timer
は1
個だけ用意しこれにTimer#addActionListener(...)
メソッドで100
個のActionListener
を追加して使用
-
Timer: 1, ActionListener: 1
-
1
個のTimer
を使用し、for
ループで10x10
のラベルの色を変更してアニメーションを実行 -
1
個のTimer
を使用しfor
ループで10x10
のラベルの色を変更してアニメーションを実行
-
参考リンク
- java - javax.swing.Timer slowdown in Java7u40 - Stack Overflow
-
JDK 1.7.0_25
までは、どれも同じような速度でアニメーションするが、JDK 1.7.0_40
以降はTimer
の数を減らさないと遅くなる? - Bug ID: JDK-7167780 Hang javasoft.sqe.tests.api.javax.swing.Timer.Ctor2Testsの修正が影響している?
-
参考リンク
- java - javax.swing.Timer slowdown in Java7u40 - Stack Overflow
-
JDK 1.7.0_25
までは、どれも同じような速度でアニメーションするが、JDK 1.7.0_40
以降はTimer
の数を減らさないと遅くなる(JDK 1.8.0
はJDK 1.7.0_25
と同等に速い) - JDK-7167780 Hang javasoft.sqe.tests.api.javax.swing.Timer.Ctor2Tests - Java Bug Systemの修正が影響していた?
-