求助啊~各位大神帮我看看这个程序到底错在哪里啊?

heiswe 2012-06-27 11:45:31
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.io.*;
import javax.swing.tree.*;



class TNode<T>
{public T nodeValue;
public TNode<T> parent,nextBrother,firstChild;

public TNode(T item){
nodeValue = item;
parent=nextBrother=firstChild=null;}

public TNode( T item , TNode<T> nextBrother , TNode<T> firstChild){
nodeValue = item;
this.parent=null;
this.nextBrother=nextBrother;
this.firstChild=firstChild;
}
}

public class MapJFrame extends JFrame implements ListSelectionListener, WindowListener
{
private DefaultTreeModel treeModel; //树模型
private DefaultMutableTreeNode root; //根结点

private JTable table; //表格组件
private DefaultTableModel tableModel; //默认表格模型

public MapJFrame() //构造图形用户界面
{
super("中国地图");
Dimension dim = getToolkit().getScreenSize(); //获得屏幕分辨率
this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2); //窗口居中
this.addWindowListener(this); //注册窗口事件监听器

JSplitPane horizontal = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); //分割窗格,水平分割,左右
horizontal.setDividerLocation(dim.width/6); //设置分隔条的位置
this.getContentPane().add(horizontal);
JSplitPane verical = new JSplitPane(JSplitPane.VERTICAL_SPLIT); //分割窗格,垂直分割,上下
verical.setDividerLocation(dim.height/3); //设置分隔条的位置,水平中间分割

this.tree.addTreeSelectionListener(this); //列表框注册选择事件监听器
javax.swing.JTree tree = createTree();
horizontal.add(new JScrollPane(tree)); //将列表框添加在左侧滚动窗格中
horizontal.add(verical);

String[] columnNames = {"查询结果"}; //表格各列的中文标题
this.tableModel = new DefaultTableModel(columnNames,0); //默认表格模式,指定列标题,0行
this.table = new JTable(tableModel); //创建空表格,有列标题
this.list.setSelectedIndex(0); //列表框选中第一项,自动执行列表框的选择事件处理方法valueChanged()
verical.add(new JScrollPane(table)); //将表格添加在上侧滚动窗格中 需要更改成自己的类
verical.add(new MapJPanel());

this.setVisible(true); //设置可见,放在语句末结束时刷新,避免操作时总是闪屏
}

public javax.swing.JTree createTree() {
// 创建默认树
javax.swing.JTree tree = new javax.swing.JTree();
// 首先,创建一个根节点:
javax.swing.tree.DefaultMutableTreeNode rootNode = new javax.swing.tree.DefaultMutableTreeNode();
// 设定节点上的数据对象,节点显示标题则为设定对象的toString()值
rootNode.setUserObject("中国");
// 中国下有7个地区:
DefaultMutableTreeNode partNode1 = new DefaultMutableTreeNode();
partNode1.setUserObject("东北地区");
DefaultMutableTreeNode partNode2 = new DefaultMutableTreeNode();
partNode2.setUserObject("华北地区");
DefaultMutableTreeNode partNode3 = new DefaultMutableTreeNode();
partNode3.setUserObject("华东地区");
DefaultMutableTreeNode partNode4 = new DefaultMutableTreeNode();
partNode4.setUserObject("华中地区");
DefaultMutableTreeNode partNode5 = new DefaultMutableTreeNode();
partNode5.setUserObject("华南地区");
DefaultMutableTreeNode partNode6 = new DefaultMutableTreeNode();
partNode6.setUserObject("西南地区");
DefaultMutableTreeNode partNode7 = new DefaultMutableTreeNode();
partNode7.setUserObject("西北地区");
// 将地区节点加到根节点上:
rootNode.add(partNode1,partNode2,partNode3,partNode4,partNode5,partNode6,partNode7);
DefaultMutableTreeNode pNode1 = new DefaultMutableTreeNode();
pNode1.setUserObject("辽宁");
DefaultMutableTreeNode cNode1 = new DefaultMutableTreeNode();
cNode1.setUserObject("沈阳");
DefaultMutableTreeNode cNode2 = new DefaultMutableTreeNode();
cNode2.setUserObject("大连");
pNode1.add(cNode1,cNode2);
DefaultMutableTreeNode pNode2 = new DefaultMutableTreeNode();
pNode2.setUserObject("吉林");
DefaultMutableTreeNode cNode3 = new DefaultMutableTreeNode();
cNode3.setUserObject("长春");
pNode2.add(cNode3);
DefaultMutableTreeNode pNode3 = new DefaultMutableTreeNode();
pNode3.setUserObject("黑龙江");
DefaultMutableTreeNode cNode4 = new DefaultMutableTreeNode();
cNode4.setUserObject("哈尔滨");
pNode3.add(cNode4);
DefaultMutableTreeNode pNode4 = new DefaultMutableTreeNode();
pNode4.setUserObject("北京");
DefaultMutableTreeNode pNode5 = new DefaultMutableTreeNode();
pNode5.setUserObject("天津");
DefaultMutableTreeNode pNode6 = new DefaultMutableTreeNode();
pNode6.setUserObject("河北");
DefaultMutableTreeNode cNode5 = new DefaultMutableTreeNode();
cNode5.setUserObject("石家庄");
pNode6.add(cNode5);
DefaultMutableTreeNode pNode7 = new DefaultMutableTreeNode();
pNode7.setUserObject("山西");
DefaultMutableTreeNode cNode6 = new DefaultMutableTreeNode();
cNode6.setUserObject("太原");
pNode7.add(cNode6);
DefaultMutableTreeNode pNode8 = new DefaultMutableTreeNode();
pNode8.setUserObject("内蒙古");
DefaultMutableTreeNode cNode7 = new DefaultMutableTreeNode();
cNode7.setUserObject("呼和浩特");
pNode8.add(cNode7);
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
magic_kid_2010 2012-07-21
  • 打赏
  • 举报
回复
是断点,打错了。
magic_kid_2010 2012-07-21
  • 打赏
  • 举报
回复
断电调试下。或者把异常贴出来。
heiswe 2012-06-27
  • 打赏
  • 举报
回复
private boolean searchByplace(String query , TNode<T> find,boolean found) //查找电话号码,结果显示在表格中
{ if (query.equlas(find.nodeValue))
{ for (int i=tableModel.getRowCount()-1; i>=0; i--) //清空表格
this.tableModel.removeRow(i);
if (find.parent !=null)
String str=new String("~~~"+ query + "是属于" + find.parent.nodeValue);
if (find.firstChild != null)
{ str += "," + query + "包含" + find.firstChild.nodeValue;
TNode<T> foundP = find.firstChild;
while(foundP.nextBrother != null)
{str +="," + foundP.nextBrother.nodeValue;
foundP =foundP.nextBrother;
}
}
this.tableModel.addRow(str);
}

if (p != null) {
      found= searchByplace(query,find.nextChild) || searchByplace(query,find.nextBrother);
      }
}

public void windowClosing(WindowEvent e) //关闭窗口事件处理方法
{
this.writeToFile(); //将电话簿中所有对象写入指定文件
System.exit(0); //应用程序终止执行
}

public void windowOpened(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }

public static void main(String args[]) throws IOException
{
new MapJFrame();
}
}
heiswe 2012-06-27
  • 打赏
  • 举报
回复
return tree;
}

//私有内部类,构造一个面板,包括2个文本行和添加、删除、查找等按钮
private class MapJPanel extends JPanel implements ActionListener
{
private JTextField text_query; //文本行,输入姓名

public MapJPanel()
{
this.setLayout(new GridLayout(2,1)); //设置布局,3行1列
JPanel p1 = new JPanel();
this.add(p1);
p1.add(new JLabel("要查询的地名"));
this.text_query = new JTextField("",20);
p1.add(text_query);

JPanel p2 = new JPanel();
this.add(p2);
JButton button_add = new JButton("查询");
p2.add(button_add);
button_add.addActionListener(this); //给每个按钮设置行为监控器
}

public TNode<T> MapTree()
{ TNode<String> c35= new TNode<String>("银川");
TNode<String> p34=new TNode<String>("宁夏",null,c35);
c35.parent=p34;
TNode<String> c34=new TNode<String>("西宁");
TNode<String> p33=new TNode<String>("青海",p34,c34);
c34.parent=p33;
TNode<String> c33=new TNode<String>("兰州");
TNode<String> p32=new TNode<String>("甘肃",p33,c33);
c33.parent=p32;
TNode<String> c32=new TNode<String>("乌鲁木齐");
TNode<String> p31=new TNode<String>("新疆",p32,c32);
c32.parent=p31;
TNode<String> c31=new TNode<String>("西安");
TNode<String> p30=new TNode<String>("陕西",p31,c31);
c31.parent=p30;
TNode<String> part7=new TNode<String>("西北地区",null,p30);
p34.parent=p33.parent=p32.parent=p31.parent=p30.parent=part7;
TNode<String> c30=new TNode<String>("拉萨");
TNode<String> p29=new TNode<String>("西藏",null,c30);
c30.parent=p29;
TNode<String> c29=new TNode<String>("贵阳");
TNode<String> p28=new TNode<String>("贵州",p29,c29);
c29.parent=p28;
TNode<String> p27=new TNode<String>("重庆",p28,null);
TNode<String> c28=new TNode<String>("成都");
TNode<String> p26=new TNode<String>("四川",p27,c28);
c28.parent=p26;
TNode<String> c27=new TNode<String>("昆明");
TNode<String> p25=new TNode<String>("云南",p26,c27);
c27.parent=p25;
TNode<String> part6=new TNode<String>("西南地区",part7,p25);
p29.parent=p28.parent=p27.parent=p26.parent=p25.parent=part6;
TNode<String> c26=new TNode<String>("桂林");
TNode<String> c25=new TNode<String>("南宁",c26,null);
TNode<String> p24=new TNode<String>("广西",null,c25);
c26.parent=c25.parent=p24;
TNode<String> c24=new TNode<String>("三亚");
TNode<String> c23=new TNode<String>("海口",c24,null);
TNode<String> p23=new TNode<String>("海南",p24,c23);
c24.parent=c23.parent=p23;
TNode<String> p22=new TNode<String>("澳门",p23,null);
TNode<String> p21=new TNode<String>("香港",p22,null);
TNode<String> c22=new TNode<String>("深圳");
TNode<String> c21=new TNode<String>("广州",c22,null);
TNode<String> p20=new TNode<String>("广东",p21,c21);
c22.parent=c21.parent=p20;
TNode<String> part5=new TNode<String>("华南地区",part6,p20);
p24.parent=p23.parent=p22.parent=p21.parent=p20.parent=part5;
TNode<String> c20=new TNode<String>("郑州");
TNode<String> p19=new TNode<String>("河南",null,c20);
c20.parent=p19;
TNode<String> c19=new TNode<String>("长沙");
TNode<String> p18=new TNode<String>("湖南",p19,c19);
c19.parent=p18;
TNode<String> c18=new TNode<String>("武汉");
TNode<String> p17=new TNode<String>("湖北",p18,c18);
c18.parent=p17;
TNode<String> part4=new TNode<String>("华中地区",part5,p17);
p19.parent=p18.parent=p17.parent=part4;
TNode<String> c17=new TNode<String>("台北");
TNode<String> p16=new TNode<String>("台湾",null,c17);
c17.parent=p16;
TNode<String> c16=new TNode<String>("济南");
TNode<String> p15=new TNode<String>("山东",p16,c16);
c16.parent=p15;
TNode<String> c15=new TNode<String>("南昌");
TNode<String> p14=new TNode<String>("江西",p15,c15);
c15.parent=p14;
TNode<String> c14=new TNode<String>("福州");
TNode<String> p13=new TNode<String>("福建",p14,c14);
c14.parent=p13;
TNode<String> c13=new TNode<String>("苏州");
TNode<String> c12=new TNode<String>("南京",c13,null);
TNode<String> p12=new TNode<String>("江苏",p13,c12);
c13.parent=c12.parent=p12;
TNode<String> c11=new TNode<String>("合肥");
TNode<String> p11=new TNode<String>("安徽",p12,c11);
c11.parent=p11;
TNode<String> c10=new TNode<String>("温州");
TNode<String> c9=new TNode<String>("宁波",c10,null);
TNode<String> c8=new TNode<String>("杭州",c9,null);
TNode<String> p10=new TNode<String>("浙江",p11,c8);
c10.parent=c9.parent=c8.parent=p10;
TNode<String> p9=new TNode<String>("上海",p10,null);
TNode<String> part3=new TNode<String>("华东地区",part2,p9);
p16.parent=p15.parent=p14.parent=p13.parent=p12.parent=p11.parent=p10.parent=p9.parent=part3;
TNode<String> c7=new TNode<String>("石家庄");
TNode<String> p8=new TNode<String>("河北",null,c7);
c7.parent=p8;
TNode<String> p7=new TNode<String>("天津",p8,null);
TNode<String> c6=new TNode<String>("呼和浩特");
TNode<String> p6=new TNode<String>("内蒙古",p7,c6);
c6.parent=p6;
TNode<String> c5=new TNode<String>("太原");
TNode<String> p5=new TNode<String>("山西",p6,c5);
c5.parent=p5;
TNode<String> p4=new TNode<String>("北京",p5,null);
TNode<String> part2=new TNode<String>("华北地区",part3,p4);
p8.parent=p7.parent=p6.parent=p5.parent=p4.parent=part2;
TNode<String> c4=new TNode<String>("哈尔滨");
TNode<String> p3=new TNode<String>("黑龙江",null,c4);
c4.parent=p3;
TNode<String> c3=new TNode<String>("长春");
TNode<String> p2=new TNode<String>("吉林",p3,c3);
c3.parent=p2;
TNode<String> c2=new TNode<String>("大连");
TNode<String> c1=new TNode<String>("沈阳",c2,null);
TNode<String> p1=new TNode<String>("辽宁",p2,c1);
c2.parent=c1.parent=p1;
TNode<String> part1=new TNode<String>("东北地区",part2,p1);
p3.parent=p2.parent=p1.parent=part1;
TNode<String> root=new TNode<String>("中国",null,part1);
part7.parent=part6.parent=part5.parent=part4.parent=part3.parent=part2.parent=part1.parent=root;
return root;
}

public void actionPerformed(ActionEvent e) //单击事件处理程序
{
if (e.getActionCommand().equals("查询")) //单击添加按钮
{
String query=text_query.getText();
if (query!="")
{ TNode<T> find = MapTree;
boolean found = false;
searchByplace(query,find,found);
}
else
JOptionPane.showMessageDialog(null, "请输入要查询的地名", "提示", JOptionPane.DEFAULT_OPTION);
}
}
}//MapJPanel内部类结束
heiswe 2012-06-27
  • 打赏
  • 举报
回复
DefaultMutableTreeNode pNode9 = new DefaultMutableTreeNode();
pNode9.setUserObject("安徽");
DefaultMutableTreeNode cNode8 = new DefaultMutableTreeNode();
cNode8.setUserObject("合肥");
pNode9.add(cNode8);
DefaultMutableTreeNode pNode10 = new DefaultMutableTreeNode();
pNode10.setUserObject("浙江");
DefaultMutableTreeNode cNode9 = new DefaultMutableTreeNode();
cNode9.setUserObject("杭州");
DefaultMutableTreeNode cNode10 = new DefaultMutableTreeNode();
cNode10.setUserObject("宁波");
DefaultMutableTreeNode cNode11 = new DefaultMutableTreeNode();
cNode11.setUserObject("温州");
pNode10.add(cNode9,cNode10,cNode11);
DefaultMutableTreeNode pNode11 = new DefaultMutableTreeNode();
pNode11.setUserObject("上海");
DefaultMutableTreeNode pNode12 = new DefaultMutableTreeNode();
pNode12.setUserObject("江苏");
DefaultMutableTreeNode cNode12 = new DefaultMutableTreeNode();
cNode12.setUserObject("南京");
DefaultMutableTreeNode cNode13 = new DefaultMutableTreeNode();
cNode13.setUserObject("苏州");
pNode12.add(cNode12,cNode13);
DefaultMutableTreeNode pNode13 = new DefaultMutableTreeNode();
pNode13.setUserObject("福建");
DefaultMutableTreeNode cNode14 = new DefaultMutableTreeNode();
cNode14.setUserObject("福州");
pNode13.add(cNode14);
DefaultMutableTreeNode pNode14 = new DefaultMutableTreeNode();
pNode14.setUserObject("江西");
DefaultMutableTreeNode cNode15 = new DefaultMutableTreeNode();
cNode15.setUserObject("南昌");
pNode14.add(cNode15);
DefaultMutableTreeNode pNode15 = new DefaultMutableTreeNode();
pNode15.setUserObject("山东");
DefaultMutableTreeNode cNode16 = new DefaultMutableTreeNode();
cNode16.setUserObject("济南");
pNode15.add(cNode16);
DefaultMutableTreeNode pNode16 = new DefaultMutableTreeNode();
pNode16.setUserObject("台湾");
DefaultMutableTreeNode cNode17 = new DefaultMutableTreeNode();
cNode17.setUserObject("台北");
pNode16.add(cNode17);
DefaultMutableTreeNode pNode17 = new DefaultMutableTreeNode();
pNode17.setUserObject("湖北");
DefaultMutableTreeNode cNode18 = new DefaultMutableTreeNode();
cNode18.setUserObject("武汉");
pNode17.add(cNode18);
DefaultMutableTreeNode pNode18 = new DefaultMutableTreeNode();
pNode18.setUserObject("湖南");
DefaultMutableTreeNode cNode19 = new DefaultMutableTreeNode();
cNode19.setUserObject("长沙");
pNode18.add(cNode19);
DefaultMutableTreeNode pNode19 = new DefaultMutableTreeNode();
pNode19.setUserObject("河南");
DefaultMutableTreeNode cNode20 = new DefaultMutableTreeNode();
cNode20.setUserObject("郑州");
pNode19.add(cNode20);
DefaultMutableTreeNode pNode20 = new DefaultMutableTreeNode();
pNode20.setUserObject("广东");
DefaultMutableTreeNode cNode21 = new DefaultMutableTreeNode();
cNode21.setUserObject("广州");
DefaultMutableTreeNode cNode22 = new DefaultMutableTreeNode();
cNode22.setUserObject("深圳");
pNode20.add(cNode21,cNode22);
DefaultMutableTreeNode pNode21 = new DefaultMutableTreeNode();
pNode21.setUserObject("香港");
DefaultMutableTreeNode pNode22 = new DefaultMutableTreeNode();
pNode22.setUserObject("澳门");
DefaultMutableTreeNode pNode23 = new DefaultMutableTreeNode();
pNode23.setUserObject("海南");
DefaultMutableTreeNode cNode23 = new DefaultMutableTreeNode();
cNode23.setUserObject("海口");
DefaultMutableTreeNode cNode24 = new DefaultMutableTreeNode();
cNode24.setUserObject("三亚");
pNode23.add(cNode23,cNode24);
DefaultMutableTreeNode pNode24 = new DefaultMutableTreeNode();
pNode24.setUserObject("广西");
DefaultMutableTreeNode cNode25 = new DefaultMutableTreeNode();
cNode25.setUserObject("南宁");
DefaultMutableTreeNode cNode26 = new DefaultMutableTreeNode();
cNode26.setUserObject("桂林");
pNode24.add(cNode25,cNode26);
DefaultMutableTreeNode pNode25 = new DefaultMutableTreeNode();
pNode25.setUserObject("云南");
DefaultMutableTreeNode cNode27 = new DefaultMutableTreeNode();
cNode27.setUserObject("昆明");
pNode25.add(cNode27);
DefaultMutableTreeNode pNode26 = new DefaultMutableTreeNode();
pNode26.setUserObject("四川");
DefaultMutableTreeNode cNode28 = new DefaultMutableTreeNode();
cNode28.setUserObject("成都");
pNode26.add(cNode28);
DefaultMutableTreeNode pNode27 = new DefaultMutableTreeNode();
pNode27.setUserObject("重庆");
DefaultMutableTreeNode pNode28 = new DefaultMutableTreeNode();
pNode28.setUserObject("贵州");
DefaultMutableTreeNode cNode29 = new DefaultMutableTreeNode();
cNode29.setUserObject("贵阳");
pNode28.add(cNode29);
DefaultMutableTreeNode pNode29 = new DefaultMutableTreeNode();
pNode29.setUserObject("西藏");
DefaultMutableTreeNode cNode30 = new DefaultMutableTreeNode();
cNode30.setUserObject("拉萨");
pNode29.add(cNode30);
DefaultMutableTreeNode pNode30 = new DefaultMutableTreeNode();
pNode30.setUserObject("陕西");
DefaultMutableTreeNode cNode31 = new DefaultMutableTreeNode();
cNode31.setUserObject("西安");
pNode30.add(cNode31);
DefaultMutableTreeNode pNode31 = new DefaultMutableTreeNode();
pNode31.setUserObject("新疆");
DefaultMutableTreeNode cNode32 = new DefaultMutableTreeNode();
cNode32.setUserObject("乌鲁木齐");
pNode31.add(cNode32);
DefaultMutableTreeNode pNode32 = new DefaultMutableTreeNode();
pNode32.setUserObject("甘肃");
DefaultMutableTreeNode cNode33 = new DefaultMutableTreeNode();
cNode33.setUserObject("兰州");
pNode31.add(cNode32);
DefaultMutableTreeNode pNode33 = new DefaultMutableTreeNode();
pNode33.setUserObject("青海");
DefaultMutableTreeNode cNode34 = new DefaultMutableTreeNode();
cNode34.setUserObject("西宁");
pNode33.add(cNode34);
DefaultMutableTreeNode pNode34 = new DefaultMutableTreeNode();
pNode34.setUserObject("宁夏");
DefaultMutableTreeNode cNode35 = new DefaultMutableTreeNode();
cNode35.setUserObject("银川");
pNode34.add(cNode35);
// 将省节点加到地区节点上:
partNode1.add(pNode1,pNode2,pNode3);
partNode2.add(pNode4,pNode5,pNode6,pNode7,pNode8);
partNode3.add(pNode9,pNode10,pNode11,pNode12,pNode13,pNode14,pNode15,pNode16);
partNode4.add(pNode17,pNode18,pNode19);
partNode5.add(pNode20,pNode21,pNode22,pNode23,pNode24);
partNode6.add(pNode25,pNode26,pNode27,pNode28,pNode29);
partNode7.add(pNode30,pNode31,pNode32,pNode33);
// 创建树的Model对象,创建时传入根节点:
javax.swing.tree.DefaultTreeModel dm = new DefaultTreeModel(rootNode);
// 将模型设给树,树上显示的将上前面所加载的节点
tree.setModel(dm);

50,544

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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