import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;public class JtreeDemo extends JApplet
{
JTree tree;
JTextField jtf; public void init()
{
Container cp=getContentPane();
cp.setLayout(new BorderLayout()); DefaultMutableTreeNode top =
new DefaultMutableTreeNode("TOP");
DefaultMutableTreeNode a =
new DefaultMutableTreeNode("A");
DefaultMutableTreeNode a1 =
new DefaultMutableTreeNode("A1");
a.add(a1);
DefaultMutableTreeNode a2 =
new DefaultMutableTreeNode("A2");
a.add(a2);
DefaultMutableTreeNode a3 =
new DefaultMutableTreeNode("A3");
a.add(a3);
DefaultMutableTreeNode b =
new DefaultMutableTreeNode("B");
DefaultMutableTreeNode b1 =
new DefaultMutableTreeNode("B1");
b.add(b1);
DefaultMutableTreeNode b2 =
new DefaultMutableTreeNode("B2");
b.add(b2);
DefaultMutableTreeNode b3 =
new DefaultMutableTreeNode("B3");
b.add(b3);
top.add(a);
top.add(b); tree = new JTree(top);
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; JScrollPane jsp = new JScrollPane(tree,v,h);
cp.add(jsp, BorderLayout.CENTER);
jtf=new JTextField(20);
cp.add(jtf,BorderLayout.SOUTH);
tree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
doMouseClicked(me);
}
});
} void doMouseClicked(MouseEvent me)
{
TreePath tp=tree.getPathForLocation(me.getX(),me.getY());
if (tp!= null)
jtf.setText(tp.toString());
else
jtf.setText("");
}
}想知道一下 运行这个程序,双击节点能自动展开,那程序里没有定义双击的相应事件啊? 是Jtree里面封装好了么?
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;public class JtreeDemo extends JApplet
{
JTree tree;
JTextField jtf; public void init()
{
Container cp=getContentPane();
cp.setLayout(new BorderLayout()); DefaultMutableTreeNode top =
new DefaultMutableTreeNode("TOP");
DefaultMutableTreeNode a =
new DefaultMutableTreeNode("A");
DefaultMutableTreeNode a1 =
new DefaultMutableTreeNode("A1");
a.add(a1);
DefaultMutableTreeNode a2 =
new DefaultMutableTreeNode("A2");
a.add(a2);
DefaultMutableTreeNode a3 =
new DefaultMutableTreeNode("A3");
a.add(a3);
DefaultMutableTreeNode b =
new DefaultMutableTreeNode("B");
DefaultMutableTreeNode b1 =
new DefaultMutableTreeNode("B1");
b.add(b1);
DefaultMutableTreeNode b2 =
new DefaultMutableTreeNode("B2");
b.add(b2);
DefaultMutableTreeNode b3 =
new DefaultMutableTreeNode("B3");
b.add(b3);
top.add(a);
top.add(b); tree = new JTree(top);
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED; JScrollPane jsp = new JScrollPane(tree,v,h);
cp.add(jsp, BorderLayout.CENTER);
jtf=new JTextField(20);
cp.add(jtf,BorderLayout.SOUTH);
tree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
doMouseClicked(me);
}
});
} void doMouseClicked(MouseEvent me)
{
TreePath tp=tree.getPathForLocation(me.getX(),me.getY());
if (tp!= null)
jtf.setText(tp.toString());
else
jtf.setText("");
}
}想知道一下 运行这个程序,双击节点能自动展开,那程序里没有定义双击的相应事件啊? 是Jtree里面封装好了么?
String slt_datas = e.getPath().getLastPathComponent().toString();
//这个slt_datas就是你每次选择的路径名。
}
另外附上一个初始化就展开树的代码,希望能对LZ有所帮助。 /**
* 该方法用来展开树
* @param tree JTree 需要展开的树
* @param parent TreePath 树的路径
* @param expand boolean 是否展开
*/
private void expandAll(JTree tree, TreePath parent, boolean expand) {
// Traverse children
TreeNode node = (TreeNode) parent.getLastPathComponent();
if (node.getChildCount() >= 0) {
for (Enumeration e = node.children(); e.hasMoreElements(); ) {
TreeNode n = (TreeNode) e.nextElement();
TreePath path = parent.pathByAddingChild(n);
expandAll(tree, path, expand);
}
} if (expand) {
tree.expandPath(parent);
} else {
tree.collapsePath(parent);
}
}
JTree有一个方法啊,就是当它的值改变的时候就会调用。这是当你实现这个接口TreeSelectionListener时候、然后你可以在方法些一些触发事件啊。这些代码是自己以前敲的啊。呵呵,多动手就可以了啊。
QQ199108021