Java program to remove JTree default icons?
Hello friends,
I am last year Computer Science student. I am working on live project where I use java as front end. I want to remove JTree default icons. I tried various method but I unable to write correct program. Can anyone tell me How to remove JTree default icons using java program? Please help me.
Thank you.
Re: Java program to remove JTree default icons?
You can easily remove JTree default icons by just modifying the tree cell renderer object. To get the cell renderer you have to call the JTree.getCellRenderer() which will return a DefaultTreeCellRenderer object. Then only you can remove the icon by setting a null value to the setLeafIcon(), setClosedIcon() and setOpenIcon().
Code:
package org.kodejava.example.swing;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import java.awt.*;
public class JTreeRemoveIcon extends JFrame {
public JTreeRemoveIcon() throws HeadlessException {
initializeUI();
}
private void initializeUI() {
setSize(250, 450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultMutableTreeNode roots = new DefaultMutableTreeNode("Address Book");
DefaultMutableTreeNode a = new DefaultMutableTreeNode("X");
DefaultMutableTreeNode b = new DefaultMutableTreeNode("Y");
DefaultMutableTreeNode c = new DefaultMutableTreeNode("Z");
DefaultMutableTreeNode aContact = new DefaultMutableTreeNode("AxMEN");
DefaultMutableTreeNode bContact = new DefaultMutableTreeNode("yOGESH");
DefaultMutableTreeNode cContact = new DefaultMutableTreeNode("zORE");
root.add(x);
root.add(y);
root.add(z);
x.add(aContact);
y.add(bContact);
z.add(cContact);
JTree trees = new JTree(roots);
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer();
renderer.setLeafIcon(null);
renderer.setClosedIcon(null);
renderer.setOpenIcon(null);
JScrollPane panes = new JScrollPane(trees);
pane.setPreferredSize(new Dimension(250, 450));
getContentPane().add(trees);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JTreeRemoveIcons().setVisible(true);
}
});
}
}
Re: Java program to remove JTree default icons?
You have to use UIManager class to solve this problem. The program that I had written below is working properly in my computer. Just try to run this in your computer. In this program we have to remove leaf, open, close icons.
Code:
Icon leafIcons = new ImageIcon("leaf.gif");
Icon openIcons = new ImageIcon("open.gif");
Icon closedIcons = new ImageIcon("closed.gif");
JTree trees = new JTree();
DefaultTreeCellRenderer renderers = (DefaultTreeCellRenderer)trees.getCellRenderers(); renderer.setLeafIcon(leafIcons); renderer.setClosedIcon(closedIcons); renderer.setOpenIcon(openIcons);
renderer.setLeafIcon(null);
renderer.setClosedIcon(null);
renderer.setOpenIcon(null);
UIManager.put("Tree.leafIcon", leafIcons);
UIManager.put("Tree.openIcon", openIcons); UIManager.put("Tree.closedIcon", closedIconss);
trees = new JTree();
Re: Java program to remove JTree default icons?
Code:
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.tree.DefaultTreeCellRenderer;
public class Main {
public static void main(String[] argv) throws Exception {
Icon leafIcons = new ImageIcon("leaf.gif");
Icon openIcons = new ImageIcon("open.gif");
Icon closedIcons = new ImageIcon("closed.gif");
JTree trees = new JTree();
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer();
renderer.setLeafIcon(leafIcons);
renderer.setClosedIcon(closedIcons);
renderer.setOpenIcon(openIcons);
JFrame fs = new JFrame();
fs.add(new JScrollPane(tree));
fs.setSize(350, 350);
fs.setVisible(true);
}
}
Re: Java program to remove JTree default icons?
You have to use following code in your in your project to do this. By explicitly creating the Jtree's model, the code guarantees that the tree's model is an instance of DefaultTreeModel. we know that we can invoke the model's insertNodeInto method, even though that method is not required by the TreeModel interface. Just go through it.
Code:
rootNodes = new DefaultMutableTreeNode("Root Nodes");
treeModels = new DefaultTreeModel(rootNodes);
treeModel.addTreeModelListener(new MyTreeModelListener());
trees = new JTree(treeModels);
tree.setEditable(true);
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setShowsRootHandles(true);