Jtree右击问题!

hxt1227 2008-03-10 12:32:43
我做了一个Jtree有“我的好友”这个节点,这个节点下有又有三个节点:大学同学,高中同学,初中同学。怎么让我单击“我的好友”这个节点与单击“大学同学”这几个节点右击弹出的菜单内容不一样啊?
...全文
92 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxt1227 2008-03-17
  • 打赏
  • 举报
回复
呵呵,还没有做出来!!!不做了!结帐吧!!
rxiaozheng 2008-03-13
  • 打赏
  • 举报
回复
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

public class Test {

public static void main(String[] args) {
JFrame frame = new JFrame("JTree Demo");
JTree tree = new JTree();
tree.addMouseListener( new TreeListener() );
JScrollPane scrollPane = new JScrollPane( tree );
frame.getContentPane().add( scrollPane );
frame.pack();
frame.setVisible( true );
frame.setDefaultCloseOperation( javax.swing.JFrame.EXIT_ON_CLOSE );
}

}

class TreeListener implements java.awt.event.MouseListener {

private JPopupMenu popMenu = null;
private JMenuItem menuProperty = null;

public TreeListener() {
this.popMenu = new JPopupMenu();
}

public void mouseReleased(MouseEvent e) {
if( e.isPopupTrigger() ) {
popMenu.removeAll();
TreePath path = ((JTree)e.getComponent()).getPathForLocation(e.getX(), e.getY());
if( path!=null ) {
final DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent();
// 这里添加你自己的判断和动作
if( node.isLeaf() ) {
menuProperty = new JMenuItem("Leaf");
menuProperty.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
System.out.println( node.getUserObject() + " is leaf." );
}
} );
} else {
menuProperty = new JMenuItem("Not Leaf");
menuProperty.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e ) {
System.out.println( node.getUserObject() + " is not leaf." );
}
} );
}
popMenu.add( menuProperty );
popMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
}

public void mouseClicked(MouseEvent arg0) {

}

public void mouseEntered(MouseEvent arg0) {

}

public void mouseExited(MouseEvent arg0) {

}

public void mousePressed(MouseEvent arg0) {

}
}
hxt1227 2008-03-13
  • 打赏
  • 举报
回复
还没有做出来!谁给举个例子??
hxt1227 2008-03-11
  • 打赏
  • 举报
回复
就是在”我的好友“右击弹出来的菜单假如为:添加组,添加用户。而在“大学同学”这个节点上单击弹出的为:查看
好友,聊天 这个菜单。
w358581619 2008-03-11
  • 打赏
  • 举报
回复
'右击弹出的菜单内容不一样'
不理解是什么意思..
rxiaozheng 2008-03-11
  • 打赏
  • 举报
回复
对节点类型A,设置userobject为class 1, 对节点类型B,设置userobject为class 2.
获取节点时,判断userobject的class,调用不同的popupMenu

如果节点内容比较固定,可以直接根据节点的值来显示不同的菜单
wunan320 2008-03-11
  • 打赏
  • 举报
回复
先得到选择的结点,根据结点显示不同的菜单不就行了么.
hxt1227 2008-03-11
  • 打赏
  • 举报
回复
怎么添加事件啊??可不可以说的仔细一点啊??
KK3K2005 2008-03-11
  • 打赏
  • 举报
回复
弹出以前的控制在你手中

弹出前先设置菜单
hxt1227 2008-03-10
  • 打赏
  • 举报
回复
??怎么没有人啊????

62,623

社区成员

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

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