JTreeのTreeNodeにAnimated GIFを表示する
Total: 3531, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JTreeのノードに設定したAnimated GIFのImageIconがアニメーションを行えるようにImageObserverを設定します。
Screenshot

Advertisement
Source Code Examples
TreePath path = new TreePath(s1.getPath());
icon.setImageObserver((img, infoflags, x, y, w, h) -> {
if (!tree.isShowing()) {
return false;
}
Rectangle cellRect = tree.getPathBounds(path);
if ((infoflags & (FRAMEBITS | ALLBITS)) != 0 && Objects.nonNull(cellRect)) {
tree.repaint(cellRect);
}
return (infoflags & (ALLBITS | ABORT)) == 0;
});
View in GitHub: Java, KotlinDescription
DefaultDefaultMutableTreeNodeのUserObjectとしてAnimated GIF画像から生成したImageIconを設定し、これをDefaultTreeCellRenderer#setIcon(...)でノードに表示- 自動的に再描画されないためアニメーションが開始されない
setImageObserver- 同様に設定した
ImageIconにsetImageObserver(ImageObserver)メソッドでImageObserverを追加し、正常にアニメーションが行えるように画像の更新に合わせてJTree#repaint(Rectangle)でノードを再描画 - 再描画する領域は対象のノードのみになるよう
JTree.getPathBounds(TreePath)で取得される領域に制限
- 同様に設定した