JTree 结点怎么添加事件

wisoper 2011-06-18 08:47:23
一个树状菜单的例子。
歌手
专辑1
专辑2

每当单击专辑则刷新专辑曲目(在一个JPANEL)
问下JTree的结点怎么添加事件
...全文
175 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wisoper 2011-06-23
  • 打赏
  • 举报
回复

void doMouseClicked(MouseEvent me) {
TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
if (tp != null)
jtf.setText(tp.toString());
else
jtf.setText("");
}



能给这段代码给加点注释吗
降龙 2011-06-18
  • 打赏
  • 举报
回复
网上看到的一段代码,应该可以满足你的需求。。。。(添加TreeSelectionListener事件也应该行得通)

import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.ScrollPaneConstants;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

public class MainClass {

public static void main(String[] a) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JTreeEvents());
f.setSize(500, 500);
f.setVisible(true);
}
}

class JTreeEvents extends JPanel {
JTree tree;

JTextField jtf;

public JTreeEvents() {
setLayout(new BorderLayout());
DefaultMutableTreeNode top = new DefaultMutableTreeNode("Options");

DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
top.add(a);

a.add(new DefaultMutableTreeNode("A1"));
a.add(new DefaultMutableTreeNode("A2"));

DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
top.add(b);

b.add(new DefaultMutableTreeNode("B1"));
b.add(new DefaultMutableTreeNode("B2"));
b.add(new DefaultMutableTreeNode("B3"));

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);

add(jsp, BorderLayout.CENTER);

jtf = new JTextField("", 20);
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("");
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧