![](/img/trans.png)
[英]How to Generate XML file from JTree which is dynamically created in java
[英]How to remove folder symbol which comes in front of each node from JTree in java
我試圖從JTree的節點中刪除默認情況下的文件夾符號。 我怎么能做到這一點?
僅供參考,這是一個完整的例子:
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.UIManager;
/** @see http://stackoverflow.com/questions/5260223 */
public class JTreeLite {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
//@Override
public void run() {
createGUI();
}
});
}
private static void createGUI() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Icon empty = new TreeIcon();
UIManager.put("Tree.closedIcon", empty);
UIManager.put("Tree.openIcon", empty);
UIManager.put("Tree.collapsedIcon", empty);
UIManager.put("Tree.expandedIcon", empty);
UIManager.put("Tree.leafIcon", empty);
JTree jt = new JTree();
frame.add(jt);
frame.pack();
frame.setSize(300, 400);
frame.setVisible(true);
}
}
class TreeIcon implements Icon {
private static int SIZE = 0;
public TreeIcon() {
}
public int getIconWidth() {
return SIZE;
}
public int getIconHeight() {
return SIZE;
}
public void paintIcon(Component c, Graphics g, int x, int y) {
System.out.println(c.getWidth() + " " + c.getHeight() + " " + x + " " + y);
}
}
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) jTree.getCellRenderer();
renderer.setLeafIcon(null);
renderer.setClosedIcon(null);
renderer.setOpenIcon(null);
jtree使用CellRender,例如DefaultTreeCellRenderer,您可以使用dasable或更改默認節點圖標。 此外,您可以創建自定義cellRender並為您的圖標方案定義更多難以理解的邏輯。
tree.setCellRenderer(new DefaultTreeCellRenderer() {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel component = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
ImageIcon iconPath = ((WizardNode) value).getIcon();
component.setIcon(iconPath);
return this;
}
});
Swing教程專門討論了這樣做:
http://download.oracle.com/javase/tutorial/uiswing/components/tree.html#display
您可以輕松更改用於葉,擴展分支或折疊分支節點的默認圖標。 為此,首先要創建DefaultTreeCellRenderer的實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.