NetBean如何按照自己要求创建一个树??

fenix525 2010-05-03 09:50:16
各位高手:
小弟今天想用NetBean创建一个树,从右边的组件栏里边找到了一个JTree组件,拖动上去,经过运行可以生成一个树,但是树的各项代码都是初始化好的,偶然的机会我看到了这些代码,但是发现这些代码根本无法修改,请教,如果希望自己生成一个树(我是打算从数据库中读取数据生成),应该怎么做?Netbean提供的代码能修改么?如果可以,在哪里修改,怎么修改?谢谢
...全文
139 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yca_yoyo 2010-05-04
  • 打赏
  • 举报
回复
if(node.isfile==false){
text.setText("您选中的是文件,不能在其下创建目录或文件夹");
}
else if(node.isfile=true){
text.setText(null);
dlg1.setBounds(200,200,250,140);
dlg1.setVisible(true);
dlg1.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dlg1.dispose();
}});
dlg1.setLayout(new GridLayout(4,2));
JLabel label=new JLabel("请输入名称和内容:");
JLabel label1=new JLabel("");
JLabel name=new JLabel("名称:");
JLabel information=new JLabel("内容:");
field1=new TextField(50);
field2=new TextField("不可编辑",50);
field2.setEditable(false);
dlg1.add(label);
dlg1.add(label1);
dlg1.add(name);
dlg1.add(field1);
dlg1.add(information);
dlg1.add(field2);
strname=field1.getText().toString();
dlg1.add(ok);
dlg1.add(cancel); }
}
else if(e.getActionCommand()=="创建文件"){
dlg2=new Dialog(frame,"创建文件");
node= (JtreeNode)tree.getLastSelectedPathComponent();
if(node.isfile==false){
text.setText("您选中的是文件,不能在其下创建目录或文件夹");
}
else if(node.isfile=true){
text.setText(null);
dlg2.setBounds(200,200,250,140);
dlg2.setVisible(true);


dlg2.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dlg2.dispose();
}});
dlg2.setLayout(new GridLayout(4,2));
JLabel label=new JLabel("请输入名称和内容:");
JLabel label1=new JLabel("");
JLabel name=new JLabel("名称:");
JLabel information=new JLabel("内容:");
field1=new TextField(50);
field2=new TextField(50);

dlg2.add(label);
dlg2.add(label1);
dlg2.add(name);
dlg2.add(field1);
dlg2.add(information);
dlg2.add(field2);




strname=field1.getText().toString();
strInfo=field2.getText().toString();
dlg2.add(ok1);
dlg2.add(cancel);}

}
else if(e.getSource()==ok1){
strname=field1.getText().toString();
strInfo=field2.getText().toString();
JtreeNode jt=new JtreeNode(strname,win);
jt.strInfo=strInfo;
jt.isfile=false;
if(node.isfile==true){
((DefaultTreeModel) tree.getModel()).insertNodeInto(
jt, node, node.getChildCount());
}
else{
text.setText("您选中的是文件,不能在其下创建目录或文件夹");

}
dlg2.dispose();

}
else if(e.getSource()==ok){
strname=field1.getText().toString();
JtreeNode jt2= new JtreeNode(strname,win);

if(node.isfile==true){
((DefaultTreeModel) tree.getModel()).insertNodeInto(
jt2, node, node.getChildCount());
jt2.isfile=true;
}
else{
text.setText("您选中的是文件,不能在其下创建目录或文件夹");
}

dlg1.dispose();
}
else if(e.getSource()==cancel){
dlg1.dispose();
}
else if(e.getSource()==cancel1){
dlg2.dispose();
}
else if(e.getActionCommand()=="退出"){
System.exit(0);

}
else if(e.getSource()==it1){
node= (JtreeNode)tree.getLastSelectedPathComponent();
((DefaultTreeModel) tree.getModel()).insertNodeInto(
new JtreeNode("Test",win), node, node.getChildCount());
}
else if(e.getSource()==it2){
node= (JtreeNode)tree.getLastSelectedPathComponent();
if(node.isRoot()){

text.setText("根目录不可以删除");
return;
}
((DefaultTreeModel)tree.getModel()).removeNodeFromParent(node);

}
else if(e.getSource()==it3){
tree.startEditingAtPath(tree.getSelectionPath());
}
}
public void valueChanged(TreeSelectionEvent e)
{ if(e.getSource()==tree)
{JtreeNode node=
(JtreeNode)tree.getLastSelectedPathComponent();
if(node.isfile==false)
{ String str=node.toString();
if(str.equals("boot")){
text.setText("Linux的核心文件");
}
if(str.equals("董明光"))
{text.setText(":联系电话:0411-4209876");}
else if(str.equals("李晓"))
{text.setText(str+":联系电话:010-62789876");}
else if(str.equals("王光明"))
{text.setText(str+":联系电话:0430-63596677");}
else if(str.equals("代学才"))
{text.setText(str+":联系电话:020-85192789");}
else if(str.equals(strname))
{ text.setText(node.strInfo); }
}
else
{text.setText(node.getUserObject().toString());
}
}

}
public static void main(String args[])
{ win=new Mytree2();}
}
yca_yoyo 2010-05-04
  • 打赏
  • 举报
回复
代码太长了,所以分批了
MyTree2.java
import java.awt.Dialog;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.event.*;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
public class Mytree2 implements TreeSelectionListener,ActionListener,MouseListener{
static Mytree2 win;
JTree tree;
JFrame frame;
JMenuItem j1;
JMenuItem j3;
JPopupMenu jp1;
JPopupMenu jp2;
JMenuItem it1;
JMenuItem it2;
JMenuItem it3;
JMenuItem it4;
JMenuItem it5;
String strname;
String strInfo;
Dialog dlg1;
Dialog dlg2;
TextField field1;
TextField field2;
JtreeNode node;
TreePath path;
JButton ok=new JButton("确定");
JButton cancel=new JButton("取消");
JButton ok1=new JButton("确定");
JButton cancel1=new JButton("取消");
JTextArea text=new JTextArea(20,20);
Mytree2()
{ frame=new JFrame("Linux文件系统模拟");
ArrayList<String>
ok.addActionListener(this);
cancel.addActionListener(this);
ok1.addActionListener(this);
cancel1.addActionListener(this);
jp1=new JPopupMenu();
it4=new JMenuItem("创建文件夹");
it4.addActionListener(this);
it5=new JMenuItem("创建文件");
it5.addActionListener(this);
it2=new JMenuItem("删除");
it2.addActionListener(this);
it3=new JMenuItem("修改");
it3.addActionListener(this);
jp1.add(it4);
jp1.add(it5);
jp1.add(it2);
jp1.add(it3);
JMenuBar menubar=new JMenuBar();
frame.add(menubar);
JMenu file=new JMenu("文件");
JMenu file1=new JMenu("帮助");
menubar.add(file);
menubar.add(file1);
j1=new JMenuItem("创建文件");
j3=new JMenuItem("创建文件夹");
j3.addActionListener(this);
j1.addActionListener(this);
file.add(j1);
JMenuItem j2=new JMenuItem("退出");
file.add(j3);
file.add(j2);
j2.addActionListener(this);
JtreeNode root=new JtreeNode("boot",win);
JtreeNode t1=new JtreeNode("大学同学",win);
JtreeNode t2=new JtreeNode("研究生同学",win);
JtreeNode t1_1=new JtreeNode("董明光",win); t1_1.isfile=false;
JtreeNode t1_2=new JtreeNode("李晓",win); t1_2.isfile=false;
JtreeNode t2_1=new JtreeNode("王光明",win); t2_1.isfile=false;
JtreeNode t2_2=new JtreeNode("代学才",win); t2_2.isfile=false;
DefaultTreeModel model=new DefaultTreeModel(root);
tree=new JTree(model);
tree.addMouseListener(this);
root.add(t1);
root.add(t2);
t1.add(t1_1);
t1.add(t1_2);
t2.add(t2_1);
t2.add(t2_2);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setEditable(true);
JScrollPane scrollpane=new JScrollPane(tree);
JScrollPane scrollpane1=new JScrollPane(text);
JSplitPane splitpane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
true,tree,scrollpane1);
tree.addTreeSelectionListener(this);
//frame.add(splitpane);
DefaultTreeCellRenderer df=new DefaultTreeCellRenderer();
tree.setCellEditor(new DefaultTreeCellEditor(tree,df));
frame.addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{System.exit(0);} });
frame.setJMenuBar(menubar);
frame.add(splitpane);
frame.pack();
frame. setVisible(true);
frame.setBounds(70,80,600,500);
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mousePressed(MouseEvent e){
path=tree.getPathForLocation(e.getX(),e.getY());
if(path==null){
return;
}
tree.setSelectionPath(path);
if(e.getButton()==3){
jp1.show(tree,e.getX(),e.getY());

}
}
public void mouseReleased(MouseEvent e){
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()=="创建文件夹"){
dlg1=new Dialog(frame,"创建文件夹");
node= (JtreeNode)tree.getLastSelectedPathComponent();
yca_yoyo 2010-05-04
  • 打赏
  • 举报
回复
呵呵,我以前要交作业也做了一个不过熟悉了树的各个方法就不难了,我可以给你一个例子,是我自己做的
JTreeNode.java
import javax.swing.tree.DefaultMutableTreeNode;
public class JtreeNode extends DefaultMutableTreeNode{
boolean isfile;
String strInfo;
JtreeNode(String filename,Mytree2 win){
super(filename);
this.isfile=true;
if(win!=null){
if(win.strInfo==null)
return;
this.strInfo=win.strInfo;
}

}

}
欢乐极客 2010-05-04
  • 打赏
  • 举报
回复
netbeans这么牛逼?好久没用了
winterlight09 2010-05-03
  • 打赏
  • 举报
回复
然后上面的代码出来的效果就是:
gray
light-gray
dark-gray
red
green
winterlight09 2010-05-03
  • 打赏
  • 举报
回复
NetBeans这么强大,当然可以了,如下:
你运行这个程序这个树里数据是colors,sports,food这些节点,你可以把它们进行修改:
1,在设计面板上,右击这个树,选择“属性”,
2,在出来的对话框里选择第一个选项卡“属性”
3,在这个选项卡里,选择第一列值为model的这一行,点击右边的省略号
4,出来树模型编辑器,你会发现它预设的所有节点出现在左边的列表里,并且是可以编辑的
这时你就可以对其进行修改,或者全部删了然后再加载自己的数据。
可以借助某事件触发下面的代码执行来添加你的数据,如下

DefaultMutableTreeNode color = new DefaultMutableTreeNode("Color");
DefaultMutableTreeNode gray = new DefaultMutableTreeNode ("Gray");
color.add(gray);
color.add(new DefaultMutableTreeNode ("Red"));
gray.add(new DefaultMutableTreeNode ("Light-gray"));
gray.add(new DefaultMutableTreeNode ("Dark-gray"));
color.add(new DefaultMutableTreeNode ("Green"));
javax.swing.tree.DefaultTreeModel dtm=new javax.swing.tree.DefaultTreeModel(color);
this.jTree1.setModel(dtm);
this.jTree1.updateUI();

就以上面的方式加载你自己的数据

62,631

社区成员

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

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