Jtree右击问题! 我做了一个Jtree有“我的好友”这个节点,这个节点下有又有三个节点:大学同学,高中同学,初中同学。怎么让我单击“我的好友”这个节点与单击“大学同学”这几个节点右击弹出的菜单内容不一样啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对节点类型A,设置userobject为class 1, 对节点类型B,设置userobject为class 2.获取节点时,判断userobject的class,调用不同的popupMenu如果节点内容比较固定,可以直接根据节点的值来显示不同的菜单 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) { }} eclipse3.6 配置maven出错!!!!!!!!!!!!! java与数据库 出几个正则表达式的题吧, JAVA中文编码问题 如何在applet中点击一个按钮,关闭当前浏览器? 100分求Rational XDE Developer for Java V2003版下载 一个关于Jini的问题? 大神给我看看这个方法有什么问题 菜鸟问题 关于文本内容转字符串的问题 如何让JTableHeader不显示边框? 一个小问题
获取节点时,判断userobject的class,调用不同的popupMenu如果节点内容比较固定,可以直接根据节点的值来显示不同的菜单
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) {
}
}