package xiyouNavigationCode; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Image; import java.awt.Label; import java.awt.Panel; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.net.URL; import javax.swing.*; /** * @学校 西安邮电大学 * @专业 软件工程1603班 * @author 权航博 * */ public class Test2 { final static String[] test = { "水煮鸽子", "图书馆", "西区正门", "行政楼", "学术交流中心宾馆", "A栋教学楼", "B栋教学楼", "一号实验楼", "二号实验楼", "三号实验楼", "大学生活动中心", "校史馆", "情人湖", "体育馆", "体育场", "网球场", "临时停车场", "土操场", "浴室(西区)", "西邮天桥", "校医务室", "美食广场", "旭日苑(西区食堂)", "超市(西区)", "西区宿舍楼", "教师公寓", "浴室(东区)", "东区宿舍楼", "东升苑(东区食堂)", "东区实验教学楼", "东区正门" }; public static void main(String[] args) { // 主函数 new PJLabel(); } // 对组件进行处理 public static class PJLabel extends JFrame { public PJLabel() { JLabel logo=new JLabel();//校徽 ImageIcon ic1 = new ImageIcon(this.getClass().getResource("xiao.png")); logo.setIcon(ic1); JComboBox<String> ja1 = new JComboBox<>(new MyComboBox()); JLabel ja = new JLabel();//起点 ImageIcon ic2 = new ImageIcon(this.getClass().getResource("start_flag.png")); ja.setIcon(ic2); JComboBox<String> jb1 = new JComboBox<>(new MyComboBox()); JLabel jb = new JLabel();//终点 ImageIcon ic3 = new ImageIcon(this.getClass().getResource("obj_flag.jpg")); jb.setIcon(ic3); JButton jd=new JButton("点击此处有惊喜"); final JLabel jc = new JLabel("搜索结果"); final JTextArea jc1 = new JTextArea("结果显示处", 100,10); jc1.setPreferredSize(new Dimension(200,10)); jc1.setLineWrap(true); //激活自动换行功能 jc1.setWrapStyleWord(true); final JLabel show_p = new JLabel("图片展示"); final JLabel je0 = new JLabel("信息查询"); JComboBox<String> je = new JComboBox<>(new MyComboBox()); final JTextArea je1=new JTextArea(100,10); // 容器处理 setTitle("西邮导航"); final Container c = getContentPane(); c.setBackground(Color.green); setLayout(new BorderLayout(10, 10)); setBounds(0, 0, 1743, 1080); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //触发处理 //ja处理 ja1.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { // TODO Auto-generated method stub int stateChange= e.getStateChange(); String item=e.getItem().toString(); if(stateChange==ItemEvent.SELECTED){//选中选项触发 jc1.setText(item+"---->"); }else{ //取消选中 } } }); //jb1处理 jb1.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { // TODO Auto-generated method stub int stateChange= e.getStateChange(); String item=e.getItem().toString(); if(stateChange==ItemEvent.SELECTED){ jc1.append(item); }else if(stateChange==ItemEvent.DESELECTED){ String str=jc1.getText(); String[] str1=str.split("---->"); jc1.setText(str1[0]+"---->"); } } }); //按钮处理 jd.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String str=jc1.getText(); String [] s=str.split("---->"); int l=s.length; String [] str1=SearchRoad(s[l-1], s[0]); jc1.setText(""); //jc1.append((String)(String.valueOf(l))); for(int i=0;i<31;i++){ jc1.append(str1[i]); if(str1[i].equals(s[l-1])) { return ; } jc1.append("---->"); } } }); je.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { // TODO Auto-generated method stub int stateChange= e.getStateChange(); String item=e.getItem().toString(); if(stateChange==ItemEvent.SELECTED){//选中选项触发 //System.out.println("xuanzhogn"); String infor=seekinfor(item); je1.setText(infor); }else{ //取消选中 } } }); // 加图片 final JLabel la = new JLabel(); ImageIcon ic = new ImageIcon(this.getClass().getResource("xiyou1.jpg")); la.setIcon(ic); la.setBounds(20, 20, 1350, 1050); c.add(la, BorderLayout.WEST);// 加图片 setVisible(true);// 如不加,不显示,点几下才能显示 // 加框框 // 先做一个面板 final Panel p = new Panel(null); // ja.setPreferredSize(new Dimension(100,20)) ; p.add(logo);//校徽 logo.setBounds(0, 0, 555, 83); p.add(ja);//起点标 ja.setBounds(40, 95, 50, 50); p.add(ja1); ja1.setBounds(80, 110, 100, 30); p.add(jb); jb.setBounds(280, 95, 50, 50); p.add(jb1); jb1.setBounds(330, 110, 100, 30); p.add(jd); jd.setBackground(Color.orange); jd.setBounds(50, 155, 450, 40); p.add(jc); jc.setBounds(50, 200,70, 50); p.add(jc1); jc1.setBounds(105, 205, 350, 100); je0.setBounds(140, 570, 100, 100);//信息查询标签 je.setBounds(200, 600, 150, 50);//选项框 p.add(je0); p.add(je); p.add(je1); je1.setBounds(20, 650, 500, 300); p.setBackground(Color.cyan); c.add(p); setVisible(true); /*按钮安排*/ show_p.setBounds(50, 380, 70, 50); p.add(show_p); setVisible(true); //图书馆 JButton library=new JButton(); //ImagIcon ImageIcon library_p=new ImageIcon(this.getClass().getResource("library.png")); library.setIcon(library_p); la.add(library); library.setBounds(654, 418, 185, 131); library.setBorderPainted(false); setVisible(true); library.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("lib.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(150, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); //水煮鸽子 JButton shui=new JButton(); ImageIcon shui_p=new ImageIcon(this.getClass().getResource("水煮鸽子.png")); shui.setIcon(shui_p); la.add(shui); shui.setBounds(705, 807, 116, 86); shui.setBorderPainted(false); setVisible(true); shui.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("水煮鸽子1.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(150, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); //东区教学楼 JButton donglou=new JButton(); ImageIcon donglou_p=new ImageIcon(this.getClass().getResource("东楼.png")); donglou.setIcon(donglou_p); la.add(donglou); donglou.setBounds(79, 690, 176, 143); donglou.setBorderPainted(false); setVisible(true); donglou.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("东楼1.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(155, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); //东区宿舍 JButton dongsu=new JButton(); ImageIcon dongsu_p=new ImageIcon(this.getClass().getResource("东宿.png")); dongsu.setIcon(dongsu_p); la.add(dongsu); dongsu.setBounds(80, 482, 106, 186); dongsu.setBorderPainted(false); setVisible(true); dongsu.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("东宿.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(155, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); //西区正门 JButton door=new JButton(); ImageIcon door_p=new ImageIcon(this.getClass().getResource("西区正门.png")); door.setIcon(door_p); la.add(door); door.setBounds(685, 917, 116, 103); door.setBorderPainted(false); setVisible(true); door.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("西区正门.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(155, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); //情人湖 JButton hu=new JButton(); ImageIcon hu_p=new ImageIcon(this.getClass().getResource("情人湖.png")); hu.setIcon(hu_p); la.add(hu); hu.setBounds(503, 459, 145, 136); hu.setBorderPainted(false); setVisible(true); hu.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("情人湖1.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(156, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); //旭日苑 JButton xu=new JButton(); ImageIcon xu_p=new ImageIcon(this.getClass().getResource("旭日苑.png")); xu.setIcon(xu_p); la.add(xu); xu.setBounds(768, 88, 143, 118); xu.setBorderPainted(false); setVisible(true); xu.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("旭日苑1.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(156, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); //大活 JButton huo=new JButton(); ImageIcon huo_p=new ImageIcon(this.getClass().getResource("大活.png")); huo.setIcon(huo_p); la.add(huo); huo.setBounds(489,606, 202, 116); huo.setBorderPainted(false); setVisible(true); huo.addMouseListener(new MouseListener() { JLabel jl=new JLabel(); ImageIcon picture=null; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //remove(jl); jl.setVisible(false); p.validate(); c.validate(); } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub picture=new ImageIcon(this.getClass().getResource("大活1.jpg")); jl.setIcon(picture); p.add(jl); jl.setBounds(156, 260, 300, 300); jl.setVisible(true); } public void mouseClicked(MouseEvent e) { } }); } } public static String[] SearchRoad(String a,String b){ int i=0,j=0; String []str=new String[31]; int [] road=new int[31];//路线 int [][]matrix=new int[100][100]; //邻接矩阵 Boolean []visited=new Boolean[100]; //标记数组 for(i=0;i<visited.length;i++){ visited[i]=false; } int []dist=new int[100]; //源点到顶点i的最短距离 int source=0; //源点 int obj=0; //目标点 int vertex_num=31; //顶点数 for(i=0;i<test.length;i++){ if(a.equals(test[i])){ source=i; } } visited[source]=true; for(i=0;i<test.length;i++){ if(b.equals(test[i])){ obj=i; } } //构造邻接矩阵 matrix[0][1]=matrix[1][0]=316; matrix[0][3]=matrix[3][0]=171; matrix[0][2]=matrix[2][0]=120; matrix[0][5]=matrix[5][0]=200; matrix[1][10]=matrix[10][1]=126; matrix[1][11]=matrix[11][1]=46; matrix[1][12]=matrix[12][1]=100; matrix[1][15]=matrix[15][1]=64; matrix[1][9]=matrix[9][1]=182; matrix[2][3]=matrix[3][2]=106; matrix[5][4]=matrix[4][5]=146; matrix[5][6]=matrix[6][5]=40; matrix[6][7]=matrix[7][6]=132; matrix[7][8]=matrix[8][7]=50; matrix[8][9]=matrix[9][8]=60; matrix[9][18]=matrix[18][9]=114; matrix[10][12]=matrix[12][10]=50; matrix[13][22]=matrix[22][13]=200; matrix[13][14]=matrix[14][13]=185; matrix[15][13]=matrix[13][15]=100; matrix[17][22]=matrix[22][17]=130; matrix[18][20]=matrix[20][18]=31; matrix[18][21]=matrix[21][18]=100; matrix[19][25]=matrix[19][25]=50; matrix[19][14]=matrix[14][19]=50; matrix[22][23]=matrix[23][22]=100; matrix[24][22]=matrix[22][24]=50; matrix[25][28]=matrix[28][25]=40; matrix[25][19]=matrix[19][25]=50; matrix[26][28]=matrix[28][26]=30; matrix[26][27]=matrix[27][26]=256; matrix[27][28]=matrix[28][27]=229; matrix[27][29]=matrix[29][27]=77; matrix[29][30]=matrix[30][29]=135; for(i=0;i<vertex_num;i++){ dist[i]=matrix[source][i]; road[i]=source; } for(i=0;i<vertex_num;i++){ if(dist[i]==0){ dist[i]=Integer.MAX_VALUE; } } dist[source]=0; visited[source]=true; int min=Integer.MAX_VALUE; int min_index=0; for(i=0;i<vertex_num;i++){ min=Integer.MAX_VALUE; min_index=obj; for(j=0;j<vertex_num;j++){ if(visited[j]==false&&min>dist[j]){ min=dist[j]; min_index=j; } } visited[min_index]=true; if(obj==min_index){ int num=0; str[num++]=test[obj]; int t=obj; while(true){ int t1=road[t]; str[num++]=test[t1]; t=t1; if(t==source){ return str; } } } for(j=0;j<vertex_num;j++){ if(visited[j]==false && min+matrix[j][min_index]<dist[j] && matrix[j][min_index]!=0){ road[j]=min_index; dist[j]=matrix[j][min_index]+min; } } } return str; } public static String seekinfor(String item) { // TODO Auto-generated method stub String[] test = { "水煮鸽子", "图书馆", "西区正门", "行政楼", "学术交流中心宾馆", "A栋教学楼", "B栋教学楼", "一号实验楼", "二号实验楼", "三号实验楼", "大学生活动中心", "校史馆", "情人湖", "体育馆", "体育场", "网球场", "临时停车场", "土操场", "浴室(西区)", "西邮天桥", "校医务室", "美食广场", "旭日苑(西区食堂)", "超市(西区)", "西区宿舍楼", "教师公寓", "浴室(东区)", "东区宿舍楼", "东升苑(东区食堂)", "东区实验教学楼", "东区正门" }; String[] test1=new String[31]; test1[0]=" 水煮鸽子,常年没水,干煮"; test1[1]=" 图书馆,本科可借10本,一月为限,超出一天5毛"; test1[2]=" 西区正门,又称北门,门口有公交站牌"; test1[3]=" 行政楼,办公处"; test1[4]=" 学术交流中心宾馆,不了解"; test1[5]=" A栋实验楼,考试的地方,也是挂科的地方"; test1[6]=" B栋实验教学楼,考试去过"; test1[7]=" 一号实验教学楼,忘了哪个院的了"; test1[8]=" 二号实验楼,忘了哪个院了"; test1[9]=" 三号实验楼,忘了哪个院的了"; test1[10]=" 大学生活动中心,平时有撒活动会在这里举行"; test1[11]=" 校史馆,学校发展中的一些记录会在这里展示"; test1[12]=" 情人湖,又称狗男女湖,平时会有一些小情侣在这里"; test1[13]=" 体育馆,平时体育课在这里,刚举行过CUBA"; test1[14]=" 体育场,上体育课"; test1[15]=" 网球场,打网球或者网球考试的地方"; test1[16]=" 临时停车场,可以在这里停车"; test1[17]=" 土操场,打乒乓球,篮球"; test1[18]=" 浴室,洗澡的地方"; test1[19]=" 西邮天桥,校内连接东西区"; test1[20]=" 校医务室,除了打疫苗没去过"; test1[21]=" 美食广场,饭菜便宜,有几家还可以"; test1[22]=" 旭日苑,西区食堂,挺大,饭菜可以"; test1[23]=" 超市,一楼水房为菜鸟驿站,在旭日苑的后面"; test1[24]=" 西区宿舍,"; test1[25]=" 教师公寓,老师住的地方"; test1[26]=" 浴室,洗澡"; test1[27]=" 东区宿舍楼,从北向南分别为:安美公寓南楼,安美公寓北楼,安悦公寓南楼,安悦公寓北楼"; test1[28]=" 东升苑,一二楼为餐厅。三楼有创咖,超市,和阳光快印"; test1[29]=" 东区实验教学楼,又称逸夫楼,跟迷宫一样"; test1[30]=" 东区正门"; for(int i=0;i<31;i++){ if(item.equals(test[i])){ return test1[i]; } } return test[0]; } } // 制作下拉框 class MyComboBox extends AbstractListModel<String>implements ComboBoxModel<String> { String selecteditem = null; String[] test = { "水煮鸽子", "图书馆", "西区正门", "行政楼", "学术交流中心宾馆", "A栋教学楼", "B栋教学楼", "一号实验楼", "二号实验楼", "三号实验楼", "大学生活动中心", "校史馆", "情人湖", "体育馆", "体育场", "网球场", "临时停车场", "土操场", "浴室(西区)", "西邮天桥", "校医务室", "美食广场", "旭日苑(西区食堂)", "超市(西区)", "西区宿舍楼", "教师公寓", "浴室(东区)", "东区宿舍楼", "东升苑(东区食堂)", "东区实验教学楼", "东区正门" }; public String getElementAt(int index) { return test[index]; } public int getSize() { return test.length; } public void setSelectedItem(Object item) { selecteditem = (String) item; } public Object getSelectedItem() { return selecteditem; } public int getIndex() { for (int i = 0; i < test.length; i++) { if (test[i].equals(getSelectedItem())) return i; } return 0; } }新手,代码有点凌乱,以后会慢慢进步的,图片也已上传
西邮导航
猜你喜欢
转载自blog.csdn.net/m0_37687058/article/details/76553629
今日推荐
周排行