0

ダイクストラ アルゴリズムを含むShortestPathクラスと、 というメソッドがありcomputeRoutesます。検索ボタンのあるフォームもあります。このボタンからメソッドを呼び出したいのですが、そのcomputeRoutes方法がわかりません。

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)
4

3 に答える 3

3

NetBeans Designerで、このボタンをダブルクリックします。このボタンのActionListenerのコードが開きます(これが何であるかわからない場合は、ボタンのイベント処理を確認する必要があります)。ここでは、ShortestPathクラスのObject(既にオブジェクトを作成しましたか?)を使用してcomputeRoutes()を呼び出します。

于 2012-04-23T10:56:52.707 に答える
2

ActionListenerを実装したと思いますが、コードで上書きする必要があります

public void actionPerformed(ActionEvent e) {
   if (e.getSource() == computeRoutes) {
       // put the logic here 
   }
.....
}
于 2012-04-23T10:57:57.287 に答える
-1

ボタンクリックイベント用のOnClickListenerを実装してから、メソッドを呼び出すだけです。

http://www.roseindia.net/java/example/java/awt/MouseClick.shtml

これがあなたを助ける例です

于 2012-04-23T10:58:08.253 に答える