Swing/TimerAction のバックアップ差分(No.4)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/TimerAction へ行く。
- 1 (2014-04-14 (月) 00:48:39)
- 2 (2014-04-14 (月) 17:43:42)
- 3 (2014-04-14 (月) 19:15:19)
- 4 (2014-05-02 (金) 12:49:54)
- 5 (2014-10-26 (日) 04:11:46)
- 6 (2014-11-01 (土) 00:46:09)
- 7 (2015-11-15 (日) 19:30:21)
- 8 (2017-04-07 (金) 13:51:51)
- 9 (2017-05-16 (火) 14:33:53)
- 10 (2018-05-09 (水) 15:49:55)
- 11 (2020-05-03 (日) 14:11:51)
- 12 (2021-10-30 (土) 21:38:16)
- 13 (2022-08-20 (土) 22:15:25)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:Timerの使用数を変更
#navi(../)
#tags(Timer, Animation)
RIGHT:Posted by &author(aterai); at 2014-04-14
* Timerの使用数を変更 [#sc2aa067]
パネルのタイルアニメーションで使用する`java.swing.Timer`の数を変更して動作のテストを行います。
#download
#ref(https://lh6.googleusercontent.com/-Kc02XwN3fHA/U0qu1BcXNEI/AAAAAAAACDg/UDwGuPoJmjk/s800/TimerAction.png)
** サンプルコード [#xd44e1f4]
#code(link){{
//Timer: 1, ActionListener: 100
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();
}
});
}
@Override public Dimension getPreferredSize() {
return new Dimension(10, 10);
}
@Override protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(new Color(red, 255 - red, 0));
g.fillRect(0, 0, getWidth(), getHeight());
}
}
}}
** 解説 [#ffd4e6ea]
- `Timer: 100`
-- `10x10`個のアニメーション用タイルに一つづつ`Timer`を使用
-- `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, ActionListener: 1`
-- `1`個の`Timer`を使用し、`for`ループで`10x10`のラベルの色を変更してアニメーションを実行
** 参考リンク [#xd75a5c0]
- [http://stackoverflow.com/questions/18933986/javax-swing-timer-slowdown-in-java7u40 java - javax.swing.Timer slowdown in Java7u40 - Stack Overflow]
-- `JDK 1.7.0_25`までは、どれも同じような速度でアニメーションするが、`JDK 1.7.0_40`以降は`Timer`の数を減らさないと遅くなる?
-- [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7167780 Bug ID: JDK-7167780 Hang javasoft.sqe.tests.api.javax.swing.Timer.Ctor2Tests]の修正が影響している?
** コメント [#t096266b]
#comment