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;
}
}
新手,代码有点凌乱,以后会慢慢进步的,图片也已上传
西邮导航
最新推荐文章于 2024-09-14 18:46:05 发布