2012-03-10 64 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

回答