Si si avevo capito.
Uso un IDE (NetBeans) per il quale la directory corrente è quella del progetto.
Ho provato a far girare questo esempio completo che si trova qui
codice:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.tree.*;
public class CustomIconsRx extends JFrame {
public static void main(String[] args) {
new CustomIconsRx();
}
private ImageIcon customOpenIcon; // = new ImageIcon("Circle_1.gif");
private ImageIcon customClosedIcon;// = new ImageIcon("Circle_2.gif");
private ImageIcon customLeafIcon; // = new ImageIcon("Circle_3.gif");
public CustomIconsRx() {
super("JTree Selections");
setDefaultCloseOperation(EXIT_ON_CLOSE);
ImageIcon[] icons = getIcons();
double scale = 1.20;
createScaledIcons(icons, scale);
setContents();
pack();
setVisible(true);
}
private ImageIcon[] getIcons() {
String[] ids = { "Circle_1.gif", "Circle_2.gif", "Circle_3.gif" };
ImageIcon[] icons = new ImageIcon[ids.length];
for(int j = 0; j < icons.length; j++)
icons[j] = new ImageIcon(ids[j]);
return icons;
}
private void createScaledIcons(ImageIcon[] icons, double scale) {
customOpenIcon = new ImageIcon(scale(icons[0].getImage(), scale));
customClosedIcon = new ImageIcon(scale(icons[1].getImage(), scale));
customLeafIcon = new ImageIcon(scale(icons[2].getImage(), scale));
}
private BufferedImage scale(Image src, double scale) {
int w = (int)(scale*src.getWidth(this));
int h = (int)(scale*src.getHeight(this));
// Select type that can accommodate the images found here:
// http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/
// ComplexExamples/JTrees/images/Circle_1.gif
int type = BufferedImage.TYPE_INT_ARGB_PRE;
BufferedImage dest = new BufferedImage(w, h, type);
Graphics2D g2 = dest.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
AffineTransform at = AffineTransform.getScaleInstance(scale, scale);
g2.drawImage(src, at, this);
g2.dispose();
return dest;
}
private void setContents() {
Container content = getContentPane();
content.setLayout(new FlowLayout());
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode child;
DefaultMutableTreeNode grandChild;
for(int childIndex=1; childIndex<4; childIndex++) {
child = new DefaultMutableTreeNode("Child " + childIndex);
root.add(child);
for(int grandChildIndex=1; grandChildIndex<4; grandChildIndex++) {
grandChild =
new DefaultMutableTreeNode("Grandchild " + childIndex +
"." + grandChildIndex);
child.add(grandChild);
}
}
JTree tree1 = new JTree(root);
tree1.expandRow(1); // Expand children to illustrate leaf icons
JScrollPane pane1 = new JScrollPane(tree1);
pane1.setBorder(BorderFactory.createTitledBorder("Standard Icons"));
content.add(pane1);
JTree tree2 = new JTree(root);
tree2.expandRow(2); // Expand children to illustrate leaf icons
DefaultTreeCellRenderer renderer2 = new DefaultTreeCellRenderer();
renderer2.setOpenIcon(null);
renderer2.setClosedIcon(null);
renderer2.setLeafIcon(null);
tree2.setCellRenderer(renderer2);
JScrollPane pane2 = new JScrollPane(tree2);
pane2.setBorder(BorderFactory.createTitledBorder("No Icons"));
content.add(pane2);
JTree tree3 = new JTree(root);
tree3.expandRow(3); // Expand children to illustrate leaf icons
DefaultTreeCellRenderer renderer3 = new DefaultTreeCellRenderer();
renderer3.setOpenIcon(customOpenIcon);
renderer3.setClosedIcon(customClosedIcon);
renderer3.setLeafIcon(customLeafIcon);
tree3.setCellRenderer(renderer3);
JScrollPane pane3 = new JScrollPane(tree3);
pane3.setBorder(BorderFactory.createTitledBorder("Custom Icons"));
content.add(pane3);
}
}
Mettendo i riferimenti ad un paio di gif che ho nel mio pc ( anche un'emoticon di questo sito) ... non vedo cmq le icone.