2012-03-10 85 views
0

我正在制作一个程序,输出两位艺术家之间的最短路径(以其整数ID已知)。开始和结束是两位艺术家使用的输入。我正在创建一个带有运行按钮和标签的GUI。当按下按钮时,程序应计算最短路径,然后以字符串的形式返回并设置为GUI的标签。最短路径看起来像这样5 73 19 100,其中每个整数是艺术家的ID,5是开始艺术家,100是最终艺术家。Java GUI功能 - 子类问题?

我最短路径的代码(function()中的代码)在我把它放在main中时工作正常。但是,当我尝试合并让我的GUI运行它时,最后一个字符串只包含第一个艺术家。看来我的da.run不再起作用了?这与它在另一课上的事实有关吗?

任何关于可能发生的事情的指针,将不胜感激。这里是所有相关的GUI代码,因为我认为这是问题的原因

public class ShortestPath extends JFrame { 

private static Map<Integer, Artist> artists = new HashMap<Integer, Artist>(); 
private static Artist start, end; 
private static ArtistGraph map = new ArtistGraph(artists); 
private static DijkstrasAlgorithm da = new DijkstrasAlgorithm(map); 
private static Route r = new Route(); 

private static Connection connection; 
private static Statement statement; 

private Container contentPane; 
private JPanel panel1, panel2; 
private JButton button1; 
private JLabel label1, label2, label3; 
private JTextField field1, field2; 

public ShortestPath() { 
    //CODE FOR SETTING LABELS, PANELS, ETC REMOVED BECAUSE NOT RELEVANT FOR QUESTION 
    button1.addActionListener(new Listener()); 
    panel1.add(button1); 

    pack(); 
    setVisible(true); 

} 

private class Listener implements ActionListener 
{ 
    public void actionPerformed(ActionEvent e) 
    { 

     start = generateArtist(field1.getText()); 
     end = generateArtist(field2.getText()); 
     String done = function(); 


     label3.setText(done); 


    } 
} 

public static String function(){    
     ArtistGraph map = new ArtistGraph(artists); 
     DijkstrasAlgorithm da = new DijkstrasAlgorithm(map); 
     da.run(start, end); 

     Route r = new Route(); 
     r.calculateRoute(end, da); 

     for (int i = 0; i < r.getRoute().size(); i++) { 
      int artist_id = r.getRoute().get(i).getID(); 
      System.out.println(artist_id); 
     } 

     String s = r.toString(); 

     return s; 
    } 

让我知道是否有其他代码段将是有用的。

+0

我想知道我们是否没有足够的信息来对问题进行有根据的猜测。 – 2012-03-10 21:29:39

+0

我认为这可能与Listener中的字段引用有关。正如@HovercraftFullOfEels所说,获得更多信息将会带来巨大好处。 – 2012-03-10 21:29:59

+0

我不认为问题出在DijkstrasAlgorithm类上,因为你的代码在没有GUI的情况下工作。不,我认为问题出在GUI上,以及如何从中获取信息(可能)。 – 2012-03-10 21:58:04

回答