Jtree
隐藏root:jtree.setRootVisible(false);
2:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
public class Admin extends JFrame{
private static final long serialVersionUID = 1L;
private JTree createJTree() {
JTree jTree = new JTree();
jTree.setRootVisible( false );
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root node, should be invisible");
DefaultTreeModel defaultTreeModel = new DefaultTreeModel( root );
jTree.setModel( defaultTreeModel );
DefaultMutableTreeNode parentNode;
DefaultMutableTreeNode node;
parentNode = (DefaultMutableTreeNode) defaultTreeModel.getRoot();
node = new DefaultMutableTreeNode( "node 1" );
addNodeToDefaultTreeModel( defaultTreeModel, parentNode, node );
parentNode = node;
node = new DefaultMutableTreeNode( "node 2" );
addNodeToDefaultTreeModel( defaultTreeModel, parentNode, node );
parentNode = (DefaultMutableTreeNode) defaultTreeModel.getRoot();
node = new DefaultMutableTreeNode( "node 3" );
addNodeToDefaultTreeModel( defaultTreeModel, parentNode, node );
parentNode = node;
node = new DefaultMutableTreeNode( "node 4" );
addNodeToDefaultTreeModel( defaultTreeModel, parentNode, node );
return jTree;
}
private static void addNodeToDefaultTreeModel( DefaultTreeModel treeModel, DefaultMutableTreeNode parentNode, DefaultMutableTreeNode node ) {
treeModel.insertNodeInto(node, parentNode, parentNode.getChildCount());
if (parentNode == treeModel.getRoot()) {
treeModel.nodeStructureChanged((TreeNode) treeModel.getRoot());
}
}
public static void main(String[] args) {
JFrame j = new JFrame("Test");
j.setSize(500,300);
j.setLocation(500,300);
j.setLayout(new BorderLayout());
Admin a = new Admin();
JTree t = a.createJTree();
j.add(t);
j.setVisible(true);
}
}
2:
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class Admin extends JFrame{
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
JFrame j = new JFrame("Test");
j.setSize(500,300);
j.setLocation(500,300);
JTree t = new JTree();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
root.add(new DefaultMutableTreeNode("123"));
root.add(new DefaultMutableTreeNode("456"));
DefaultTreeModel model = new DefaultTreeModel (root);
t.setModel(model);
t.setRootVisible(false);
j.add(t);
j.setVisible(true);
}
}
3:
jtree.expandRow(0); jtree.setRootVisible(false);
4:
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
public class Admin extends JFrame {
private static final long serialVersionUID = 1L;
public void test(){
JFrame j = new JFrame("Test");
j.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
j.setSize(500, 300);
j.setLocation(500, 300);
JTree t = new JTree(){
private static final long serialVersionUID = 1L;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(0, 20, 10, 8);
}
};
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode d1 = new DefaultMutableTreeNode("11111");
d1.add(new DefaultMutableTreeNode("222"));
root.add(d1);
root.add(new DefaultMutableTreeNode("4562"));
DefaultTreeModel model = new DefaultTreeModel(root);
t.putClientProperty("JTree.lineStyle", "Horizontal");
t.setCellRenderer(new DefaultTreeCellRenderer() {
private static final long serialVersionUID = 1L;
public Component getTreeCellRendererComponent(JTree tree, Object value,boolean isSelected,boolean expanded,boolean leaf, int row,boolean hasFocus) {
Component renderer = super.getTreeCellRendererComponent(tree, value, isSelected, expanded, leaf, row, hasFocus);
Color foreground, background = getBackground();
foreground = Color.BLACK;
setBackgroundNonSelectionColor(Color.RED);
if (isSelected) {
setBackgroundNonSelectionColor(background);
} else {
setBackgroundSelectionColor(background);
background = new Color(217,236,254);
}
if (value instanceof JLabel) {
this.setText("1345676");
this.setIcon(((JLabel) value).getIcon());
}
super.setBackground(Color.yellow);
renderer.setForeground(foreground);
renderer.setBackground(background);
return renderer;
}
ImageIcon icon = new ImageIcon(this.getClass().getClassLoader().getResource("images/toolbar_new.png"));
public Icon getClosedIcon() {
return icon;
}
public Icon getLeafIcon() {
return icon;
}
public Icon getOpenIcon() {
return icon;
}
});
t.setOpaque(true);
// t.setBackground(Color.RED);
t.setModel(model);
t.setRootVisible(false);
j.add(t);
j.setVisible(true);
}
public static void main(String[] args) {
new Admin().test();
}
}
jtree展开和获取节点问题:
import java.awt.Dimension;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
/**
*
* @author yz
*/
public class MainFrame extends javax.swing.JFrame {
public MainFrame() {
initComponents();
}
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Root");
jTree1 = new javax.swing.JTree(rootNode);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jScrollPane1.setViewportView(jTree1);
/** add some dummy data */
DefaultMutableTreeNode prNode = new DefaultMutableTreeNode("a"); //project
DefaultMutableTreeNode pNode = new DefaultMutableTreeNode("a1"); //package
pNode.add(new DefaultMutableTreeNode("AutoscrollTextArea.java"));
DefaultMutableTreeNode p2Node = new DefaultMutableTreeNode("euphoria.utils");
p2Node.add(new DefaultMutableTreeNode("Timer.java"));
pNode.add(p2Node);
prNode.add(pNode);
rootNode.add(prNode);
rootNode.add(new DefaultMutableTreeNode("Hello"));
TreeModel tm = jTree1.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tm.getRoot();
DefaultMutableTreeNode tn = (DefaultMutableTreeNode) root.getFirstChild();
jTree1.expandPath(new TreePath(tn.getPath()));
jTree1.expandRow(0);
jTree1.setRootVisible(false);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 431, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 378, Short.MAX_VALUE)
);
int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
Dimension d = getPreferredSize();
this.setBounds(screenWidth / 2 - (d.width/2), screenHeight / 2 - (d.height/2), d.width, d.height);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTree jTree1;
// End of variables declaration
}