プログラマメモ2 - programmer no memo2

org.jdesktop.animation.timing.interpolation.PropertySetterを使ってpainterのプロパティを変化させようとした。 2008/08/17

org.jdesktop.swingx.painterを使って色が変化するエフェクトをつけたいので、いろいろ調べています。




timingframeworkを使うと簡単にアニメーションとかできそうなので、試しつつ、org.jdesktop.animation.timing.interpolation.PropertySetterを使ってpainterのプロパティを変化させようとしたのですが、どうも値は変更されているが、画面の再描画がされない。

具体的には、CheckerboardPainterの色をマウスオーバー時に変更したい。
JXPanelにマウスがのっかると色が黒から青へ変化。ぬけるともとの色にもどる。

Animator animator = PropertySetter.createAnimator(1000, checkerboardPainter,
"LightPaint", Color.BLACK, Color.BLUE);

MouseTrigger mouseTrigger = MouseTrigger.addTrigger(panel, animator,
MouseTriggerEvent.ENTER, true);

上記だとどうもうまくいかない。
windowサイズを変えたりとかするといろが変わってくれたりした。
※osx上で。

で、考えたのは、painter上のpropertyが変更されたというイベントを受け取ったらpanelにrepaintさせるという方法。

checkerboardPainter.addPropertyChangeListener(new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("***");
panel.repaint();
}});


できたけど、もっといい方法を模索中。
panelにpainterを設定してそのpainterからpanelに対して、repainntを走らせるのもなぁ....

: