Bir grafikte farklı yol bulma algoritmalarının sonuçlarını görüntüleyen bir uygulama yapıyorum. Yani bir düğüm genişlediğinde her zaman vurgulanmasını istiyorum. Bu sebepten, bir düğümün genişlemesi her zaman icra edilen bir dinleyiciye sahibim. Ek olarak, süreci geciktirme olasılığı vardır.JavaFX: Doğrudan yeni bir stil sınıfının uygulanması nasıl yapılır?
Ancak yeni stil sınıfları, yalnızca algoritma bittikten sonra görüntülenecek gibi görünüyor. Diğer taraftan, konsol çıkışı çalışma zamanında doğru şekilde görüntülenir. Söz konusu
kodu:
IDiGraphSearchListener<XYNode, CostEdge<XYNode>> listener = new IDiGraphSearchListener<XYNode, CostEdge<XYNode>>() {
List<CostEdge<XYNode>> way;
@Override
public void onExpandNode(XYNode node, List<CostEdge<XYNode>> way) {
if (this.way == null) {
this.way = way;
}
System.out.println("Expanding");
for (CostEdge<XYNode> costEdge : way) {
graphPane.lookup("#"+costEdge.getId()).getStyleClass().add("visited");
graphPane.lookup("#"+costEdge.getSource().getId()).getStyleClass().add("visited");
graphPane.lookup("#"+costEdge.getTarget().getId()).getStyleClass().add("visited");
System.out.println("Coloring-> EdgeID:"+costEdge.getId()+" From:"+costEdge.getSource().getId()+" To:"+costEdge.getTarget().getId());
}
try {
System.out.println("Sleeping");
Thread.sleep((long) (pathfindingSpeedSlider.getValue()*1000));
} catch (InterruptedException ex) {
//ToCatchOrNot
}
}
};
Örnek çıktı:
Algo: AStar
Expanding
Expanding
Coloring-> EdgeID:id20 From:id1 To:id2
Coloring-> EdgeID:id25 From:id1 To:id4
Coloring-> EdgeID:id45 From:id1 To:id9
Expanding
Coloring-> EdgeID:id21 From:id2 To:id3
Coloring-> EdgeID:id20 From:id1 To:id2
Coloring-> EdgeID:id25 From:id1 To:id4
Coloring-> EdgeID:id45 From:id1 To:id9
Expanding
Coloring-> EdgeID:id21 From:id2 To:id3
Coloring-> EdgeID:id20 From:id1 To:id2
Coloring-> EdgeID:id25 From:id1 To:id4
Coloring-> EdgeID:id45 From:id1 To:id9
Expanding
Coloring-> EdgeID:id21 From:id2 To:id3
Coloring-> EdgeID:id20 From:id1 To:id2
Coloring-> EdgeID:id46 From:id9 To:id5
Coloring-> EdgeID:id25 From:id1 To:id4
Coloring-> EdgeID:id45 From:id1 To:id9
Expanding
Coloring-> EdgeID:id21 From:id2 To:id3
Coloring-> EdgeID:id20 From:id1 To:id2
Coloring-> EdgeID:id46 From:id9 To:id5
Coloring-> EdgeID:id25 From:id1 To:id4
Coloring-> EdgeID:id28 From:id5 To:id6
Coloring-> EdgeID:id45 From:id1 To:id9
Expanding
Coloring-> EdgeID:id21 From:id2 To:id3
Coloring-> EdgeID:id20 From:id1 To:id2
Coloring-> EdgeID:id46 From:id9 To:id5
Coloring-> EdgeID:id25 From:id1 To:id4
Coloring-> EdgeID:id30 From:id6 To:id7
Coloring-> EdgeID:id28 From:id5 To:id6
Coloring-> EdgeID:id35 From:id6 To:id11
Coloring-> EdgeID:id45 From:id1 To:id9
getWay1
->id1/id9->id9/id5->id5/id6->id6/id7getWay2
Finish
Nabız da gecikmeyi nasıl önleyebilirim? – Niels
Bunu söylemek zor, çünkü aslında hangi davranışa ulaşmak istediğinizi anlamıyorum. Basit cevap, tüm işlemlerinizi başka bir iş parçacığında yapmak olacaktır. – mipa
Algoritmanın grafikte nasıl ilerlediğini görselleştirmek istiyorum. Böylece, bir düğümün her genişletilmesinden sonra, yolun vurgulanması ve bir sonraki düğümün genişletilmesine kadar bir gecikme olması gerekir. Bazı örnek konsol çıktılarını ekledim. – Niels