西邮导航

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;
	}
}

新手,代码有点凌乱,以后会慢慢进步的,图片也已上传
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值