Так, с фильтром получилось, спасибо. Поставил свой фильтр в ваш код, получилось как раз то, что надо. Но тут другая проблемка. Эти картинки должны быть иконками в дереве. Делаю следующим образом:
Рендерер для дерева:
| Код | private class MyTreeCellRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
final ImageIcon icon = new ImageIcon("..."); if (...) { setIcon(icon); } else { setIcon(new MyIcon(icon)); }
return this; } }
|
И своя реализация для иконок:
| Код | private class MyIcon implements Icon {
final ImageIcon icon;
public MyIcon(final ImageIcon icon) { this.icon = icon; }
public int getIconHeight() { return icon.getIconHeight(); }
public int getIconWidth() { return icon.getIconWidth(); }
public void paintIcon(Component c, Graphics g, int x, int y) { BufferedImage imgSrc = ((ToolkitImage) icon.getImage()) .getBufferedImage();
RGBImageFilter filter = new MyColorFilter(); Image imgResult = c.createImage(new FilteredImageSource(imgSrc.getSource(), filter));
g.drawImage(imgResult, x, y, c); }
}
|
Проблема: вместо иконок, на которых наложен фильтр, вижу белое поле. Не подскажете, в чем причина? |