📄 leasttimedialog.java
字号:
package src;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.net.*;
class leastTimeDialog extends JFrame{
private Graph g;
private cityFile file;
public leastTimeDialog(){
setLayout(null);
g = new Graph();
file = new cityFile();
file.inputfromInfoFile(g);
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.getImage("images/icon.png");
l1 = new JLabel("起点:");
l1.reshape(50,40,30,20);
l2 = new JLabel("终点:");
l2.reshape(50,80,30,20);
t1 = new JTextField(10);
t1.reshape(90,40,90,20);
t2 = new JTextField(10);
t2.reshape(90,80,90,20);
b1 = new JButton("确定");
b1.reshape(40,130,60,20);
b1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
b2 = new JButton("取消");
b2.reshape(140,130,60,20);
b2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
add(l1);
add(t1);
add(l2);
add(t2);
add(b1);
b1.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
if(t1.getText().equals("")||t2.getText().equals("")){
JOptionPane.showMessageDialog(null,"起 点 或 终 点 不 能 为 空 !!");
t1.grabFocus();
}
else{
int from = g.changetoNum(t1.getText());
int to = g.changetoNum(t2.getText());
if(from<0||to<0)
JOptionPane.showMessageDialog(null,"城 市 不 存 在!!");
else
{
int least = leastTime(from,to,g);
if(least == 99999)
JOptionPane.showMessageDialog(null,"两 城 市 不 相 连 ");
else
JOptionPane.showMessageDialog(null,"由"+t1.getText()+"到"+t2.getText()+"最少距离:"+least);
}
}
}
});
add(b2);
b2.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
setVisible(false);}
});
setIconImage(img);
setTitle("最少距离");
setResizable(false);
setSize(250,230);
setLocation(380,255);
}
public int leastTime(int from,int to,Graph g)
{
int distance[]=new int[g.cityNum];
int s[]=new int[g.cityNum];
int i,j,u=0;
int mindis,dis;
for(i=0;i<g.cityNum;i++)
{
distance[i]=g.cityEdge[from][i].distant;
s[i]=0;
}
s[from] = 1;
for (i=1;i<g.cityNum ;i++ )
{
mindis = 99999;
for (j=1;j<g.cityNum ;j++ )
if(s[j] ==0 && distance[j]<mindis)
{
u=j;
mindis=distance[j];
}
s[u]=1;
for(j=1;j<g.cityNum;j++)
if(s[j] ==0)
{
dis =distance[u] + g.cityEdge[u][j].distant;
distance[j]=(distance[j]<dis)?distance[j]:dis;
}
}
return distance[to];//返回从from到to的最小值
}
private JLabel l1,l2;
private JTextField t1,t2;
private JButton b1,b2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -