jtree产生后的问题 略知一二,首先你得有一个实现接口mouseListener监听器类比如名为abc,在监听器类中实现响应鼠标的接口函数,在这个函数中定义一个Jtree。做完这些后,在主构造函数中添加addmouseLister(abc);这样就可以了。另外感觉老兄的程序也有问题,jpm.add(m1)是不是改放在init()内部。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 太复杂了,很难说清楚。你需要一个自己的类,再把这个类作为节点加到树上。如果仅仅是root的节点的话,那就简单多了: tree.addMouseListener(new MouseAdapter() { public void mousePressed (MouseEvent e) { TreePath path = tree.getPathForLocation(e.getX(), e.getY()); } public void mouseReleased (MouseEvent e) { if (e.isPopupTrigger()) { TreePath path = tree.getPathForLocation(e.getX(), e.getY()); if (path != null){ Object c = path.getLastPathComponent(); if(tree.getModel().isRoot(c)){ popup.show(e.getComponent(), e.getX(), e.getY()); } } } } }); 为什么报错:import javax.swing.*;import java.awt.*;import javax.swing.tree.*;import java.awt.event.*;import javax.swing.event.*;public class jtree extends JApplet {Container f = this.getContentPane();public void init(){final JPopupMenu jpm=new JPopupMenu("aa");JMenuItem save=new JMenuItem("Save");jpm.add(save);final DefaultMutableTreeNode rootNode=new DefaultMutableTreeNode("tree root");final DefaultMutableTreeNode fnode=new DefaultMutableTreeNode("tree fnode");rootNode.add(fnode);final JTree t=new JTree(rootNode);t.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent me) {//showPopup(me); }public void mouseReleased(MouseEvent me) {showPopup(me); } void showPopup(MouseEvent me) {if(me.isPopupTrigger()&& t.getModel().getRoot()==rootNode) {jpm.show(me.getComponent(),me.getX(),me.getY());} else {return;} } } );t.setShowsRootHandles(true);t.addMouseListener(new MouseAdapter() { public void mousePressed (MouseEvent e) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); } public void mouseReleased (MouseEvent e) { if (e.isPopupTrigger()) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); if (path != null){ Object c = path.getLastPathComponent(); if(t.getModel().isRoot(c)){ //此处报错 jpm.show(e.getComponent(), e.getX(), e.getY()); } } } } });f.add(t);}.getModel()} sorry,没有这个函数只有isLeaf()你可以写成: if(!t.getModel().isLeaf(c)){ if(t.getModel().isLeaf(c))还是不行呀?报错:jtree.java:56:illegal start of type.getModel()jtree.java:56:<identifier>expected.getModel() //右键点击事件 jPopupMenu = new JPopupMenu(); JMenuItem item1 = new JMenuItem("添加子节点"); JMenuItem item2 = new JMenuItem("编辑节点"); JMenuItem item3 = new JMenuItem("删除节点"); jPopupMenu.add(item1); jPopupMenu.add(item2); jPopupMenu.add(item3); item1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { addNode(); } }); item2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { editNode(ae); } }); item3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ce) { delNode(); } }); tree.add(jPopupMenu); tree.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent er) { try { //是否右键单击 if (er.getClickCount() == 1 && SwingUtilities.isRightMouseButton(er)) { TreePath path = tree.getPathForLocation(er.getX(), er.getY()); if (path == null) return; tree.setSelectionPath(path); jPopupMenu.show(tree, er.getX(), er.getY()); } else if (er.getClickCount() == 1) { TreePath path = tree.getPathForLocation(er.getX(), er.getY()); if (path == null) return; if (tree.isExpanded(path)) { tree.collapsePath(path); } else { tree.expandPath(path); } return; } } catch (Exception ex) { ex.printStackTrace(); } } }); t.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent me) {//showPopup(me); }public void mouseReleased(MouseEvent me) {showPopup(me); } void showPopup(MouseEvent me) {if(me.isPopupTrigger()&& t.getModel().getRoot()==rootNode) {jpm.show(me.getComponent(),me.getX(),me.getY());} else {return;} } } );t.setShowsRootHandles(true);t.addMouseListener(new MouseAdapter() { public void mousePressed (MouseEvent e) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); } public void mouseReleased (MouseEvent e) { if (e.isPopupTrigger()) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); if (path != null){ Object c = path.getLastPathComponent(); if(t.getModel().isRoot(c)){ //此处报错 jpm.show(e.getComponent(), e.getX(), e.getY()); } } } } });改为:t.setShowsRootHandles(true);t.addMouseListener(new MouseAdapter() { public void mousePressed (MouseEvent e) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); } public void mouseReleased (MouseEvent e) { if (e.isPopupTrigger()) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); if (path != null){ jpm.show(e.getComponent(), e.getX(), e.getY()); } } } } }); 大哥:你再试试打开html后,右键点到空白色处一样的会跳出菜单来 package untitled1;import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.JApplet;import javax.swing.JPopupMenu;import javax.swing.JMenuItem;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.JTree;import javax.swing.tree.TreePath;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class jtree extends JApplet { private boolean isStandalone = false; //Get a parameter value public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } //Construct the applet public jtree() { } //Initialize the applet public void init() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { Container f = this.getContentPane(); final JPopupMenu jpm = new JPopupMenu("aa"); JMenuItem save = new JMenuItem("Save"); jpm.add(save); final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode( "tree root"); final DefaultMutableTreeNode fnode = new DefaultMutableTreeNode( "tree fnode"); rootNode.add(fnode); final JTree t = new JTree(rootNode); t.setShowsRootHandles(true); t.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { TreePath path = t.getPathForLocation(e.getX(), e.getY()); if (path != null) { jpm.show(e.getComponent(), e.getX(), e.getY()); } } } }); f.add(t);}//Start the appletpublic void start() {}//Stop the appletpublic void stop() {}//Destroy the appletpublic void destroy() {}//Get Applet informationpublic String getAppletInfo() { return "Applet Information";}//Get parameter infopublic String[][] getParameterInfo() { return null;}} 看来,这道题还得请了解JAVA语法规则的朋友来说一下了!!!!!!!!!!! 关于用户是否在线的处理,大家来讨论. 加解密 出错 请问怎么样实现一个图片的淡入淡出特效(最好连在j2me上实现的也说一下) 新手,问Servlet同JavaBean的区别在哪。我怎样判断一个class什么 怎么样从byte[]类型,转换到char[]类型? 有哪位知道在JBuilder的Swing中哪一个控件可以起到划一个框架同时可在该框架中添加不同的组件? [讨论] 请各位就《Thinking in java》发表自己的评价 jdbc访问大型数据库的速度问题?! 低手发问 一个小问题 各位大虾请帮忙
你需要一个自己的类,再把这个类作为节点加到树上。如果仅仅是root的节点的话,那就简单多了: tree.addMouseListener(new MouseAdapter() {
public void mousePressed (MouseEvent e) {
TreePath path = tree.getPathForLocation(e.getX(), e.getY()); }
public void mouseReleased (MouseEvent e) {
if (e.isPopupTrigger()) {
TreePath path = tree.getPathForLocation(e.getX(), e.getY());
if (path != null){
Object c = path.getLastPathComponent();
if(tree.getModel().isRoot(c)){
popup.show(e.getComponent(), e.getX(), e.getY());
}
}
}
}
});
import javax.swing.*;
import java.awt.*;
import javax.swing.tree.*;
import java.awt.event.*;
import javax.swing.event.*;
public class jtree extends JApplet {Container f = this.getContentPane();
public void init(){final JPopupMenu jpm=new JPopupMenu("aa");
JMenuItem save=new JMenuItem("Save");
jpm.add(save);final DefaultMutableTreeNode rootNode=new DefaultMutableTreeNode("tree root");
final DefaultMutableTreeNode fnode=new DefaultMutableTreeNode("tree fnode");
rootNode.add(fnode);
final JTree t=new JTree(rootNode);t.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent me) {
//showPopup(me);
}
public void mouseReleased(MouseEvent me) {
showPopup(me);
}
void showPopup(MouseEvent me) {
if(me.isPopupTrigger()&& t.getModel().getRoot()==rootNode) {
jpm.show(me.getComponent(),me.getX(),me.getY());} else {return;}
} } );
t.setShowsRootHandles(true);
t.addMouseListener(new MouseAdapter() {
public void mousePressed (MouseEvent e) {
TreePath path = t.getPathForLocation(e.getX(), e.getY()); }
public void mouseReleased (MouseEvent e) {
if (e.isPopupTrigger()) {
TreePath path = t.getPathForLocation(e.getX(), e.getY());
if (path != null){
Object c = path.getLastPathComponent();
if(t.getModel().isRoot(c)){ //此处报错
jpm.show(e.getComponent(), e.getX(), e.getY());
}
}
}
}
});
f.add(t);
}
.getModel()
}
你可以写成:
if(!t.getModel().isLeaf(c)){
报错:
jtree.java:56:illegal start of type
.getModel()
jtree.java:56:<identifier>expected
.getModel()
JMenuItem item1 = new JMenuItem("添加子节点");
JMenuItem item2 = new JMenuItem("编辑节点");
JMenuItem item3 = new JMenuItem("删除节点"); jPopupMenu.add(item1);
jPopupMenu.add(item2);
jPopupMenu.add(item3); item1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
addNode();
}
});
item2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
editNode(ae);
}
}); item3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ce) {
delNode();
}
}); tree.add(jPopupMenu);
tree.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent er) {
try {
//是否右键单击
if (er.getClickCount() == 1 && SwingUtilities.isRightMouseButton(er)) {
TreePath path = tree.getPathForLocation(er.getX(), er.getY());
if (path == null)
return;
tree.setSelectionPath(path);
jPopupMenu.show(tree, er.getX(), er.getY());
} else if (er.getClickCount() == 1) {
TreePath path = tree.getPathForLocation(er.getX(), er.getY());
if (path == null)
return;
if (tree.isExpanded(path)) {
tree.collapsePath(path);
}
else {
tree.expandPath(path);
}
return;
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
});
//showPopup(me);
}
public void mouseReleased(MouseEvent me) {
showPopup(me);
}
void showPopup(MouseEvent me) {
if(me.isPopupTrigger()&& t.getModel().getRoot()==rootNode) {
jpm.show(me.getComponent(),me.getX(),me.getY());} else {return;}
} } );
t.setShowsRootHandles(true);
t.addMouseListener(new MouseAdapter() {
public void mousePressed (MouseEvent e) {
TreePath path = t.getPathForLocation(e.getX(), e.getY()); }
public void mouseReleased (MouseEvent e) {
if (e.isPopupTrigger()) {
TreePath path = t.getPathForLocation(e.getX(), e.getY());
if (path != null){
Object c = path.getLastPathComponent();
if(t.getModel().isRoot(c)){ //此处报错
jpm.show(e.getComponent(), e.getX(), e.getY());
}
}
}
}
});
改为:
t.setShowsRootHandles(true);
t.addMouseListener(new MouseAdapter() {
public void mousePressed (MouseEvent e) {
TreePath path = t.getPathForLocation(e.getX(), e.getY()); }
public void mouseReleased (MouseEvent e) {
if (e.isPopupTrigger()) {
TreePath path = t.getPathForLocation(e.getX(), e.getY());
if (path != null){
jpm.show(e.getComponent(), e.getX(), e.getY());
}
}
}
}
});
import java.awt.event.*;
import java.applet.*;
import javax.swing.JApplet;
import javax.swing.JPopupMenu;
import javax.swing.JMenuItem;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JTree;
import javax.swing.tree.TreePath;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class jtree
extends JApplet {
private boolean isStandalone = false;
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
} //Construct the applet
public jtree() {
} //Initialize the applet
public void init() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
} //Component initialization
private void jbInit() throws Exception {
Container f = this.getContentPane();
final JPopupMenu jpm = new JPopupMenu("aa");
JMenuItem save = new JMenuItem("Save");
jpm.add(save); final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(
"tree root");
final DefaultMutableTreeNode fnode = new DefaultMutableTreeNode(
"tree fnode");
rootNode.add(fnode);
final JTree t = new JTree(rootNode); t.setShowsRootHandles(true);
t.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
TreePath path = t.getPathForLocation(e.getX(), e.getY()); } public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
TreePath path = t.getPathForLocation(e.getX(), e.getY());
if (path != null) {
jpm.show(e.getComponent(), e.getX(), e.getY());
}
}
}
}); f.add(t);}//Start the applet
public void start() {
}//Stop the applet
public void stop() {
}//Destroy the applet
public void destroy() {
}//Get Applet information
public String getAppletInfo() {
return "Applet Information";
}//Get parameter info
public String[][] getParameterInfo() {
return null;
}
}