2012-04-23 14 views
0

私はShortestPathクラスにDijkstraアルゴリズムを持ち、computeRoutesというメソッドを持っています。検索ボタン付きのフォームもあります。このボタンからcomputeRoutesメソッドを呼び出すが、これを行う方法を理解することはできない。Java - netbeans形式のボタンにメソッドを追加する

public class ShortestPath { 
    public static void computeRoutes(Node source){ 

     source.minimumDistance = 0; 
     PriorityQueue<Node> nodeQueue = new PriorityQueue<Node>(); 
     nodeQueue.add(source); 

     while(!nodeQueue.isEmpty()){ 
      Node u = nodeQueue.poll(); 
      for(Edge e : u.neighbours){ 
       Node n = e.goal; 
       int weight = e.weight; 
       int distThruU = u.minimumDistance + weight; 
        if(distThruU < n.minimumDistance){ 
         nodeQueue.remove(n); 

        n.minimumDistance = distThruU; 
        n.previousNode = u; 
        nodeQueue.add(n); 
       } 
      } 
     } 
    } 

    public static List<Node> getShortestRouteTo(Node goal){ 
     List<Node> route = new ArrayList<Node>(); 
     for(Node node = goal; node != null; node = node.previousNode) 
      route.add(node); 
     Collections.reverse(route); 
     return route; 
    } 
} 

public class BPForm extends javax.swing.JFrame { 
.... 
private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) { 
(I want to call the computeRoutes method here) 

答えて

3

netbeansデザイナーでは、このボタンをダブルクリックします。このボタンのActionListenerのコードを開きます(これが何であるかわからない場合は、ボタンのイベント処理を見てください)。 ShortestPathクラスのオブジェクト(すでにオブジェクトを作成しましたか?)を使用して、ここでcomputeRoutes()を呼び出してください。

2

私はあなたがActionListenerを実装してきたと仮定して、あなたが

public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == computeRoutes) { 
     // put the logic here 
    } 
..... 
} 
-1

を上書きする必要があるコードであなただけのボタンクリックイベント のためのOnClickリスナーを実装する必要があり、その後、ちょうどあなたの方法

http://www.roseindia.net/java/example/java/awt/MouseClick.shtmlを呼び出します

ここにはあなたに役立つ例があります

+0

ボタンの場合、 'ActionListener'を使用してください。これは、人々がRoseIndiaサイトから得たゴミのアドバイスの典型です。 –

関連する問題