2016-04-06 27 views
0

Sorun - TreeTableView'de gerçek zamanlı veriler doldurulamıyor. Veriler, & numaralı dış kaynaklardan gerçek zamanlı olarak gösterilmektedir TreeTableView, gerçek zamanlı olarakJavaFx TreeTableView Gerçek Zamanlı Veriler

Aşağıda kodun kısa bir bölümüyüz. Ağaç Tabla Görünümü'nü düğümlerle oluşturabiliyorum. Test için, tablo ağacı görünümü alanı ile bir rastgele sayı üreteci & bağlı oluşturduk. Bu doğru yaklaşım olup olmadığından emin değil.

Umut Sorunu açık bir şekilde açıklamayı başardım. Rehberlik için sabırsızlanıyoruz.

FXML:

<TreeTableColumn fx:id="car" prefWidth="150.0" text="Car" /> 
         <TreeTableColumn fx:id="latest" prefWidth="75.0" text="Latest" /> 
          <TreeTableColumn fx:id="high" prefWidth="75.0" text="High" /> 
          <TreeTableColumn fx:id="low" prefWidth="75.0" text="Low" /> 

Kontrol: bu & bir rasgele sayı üreteci eklenen I FXML bir düğme ekledik test amacıyla

public void initialize(URL location, ResourceBundle resources) { 
    // Initialize Table Views 
    car.setCellValueFactory((CellDataFeatures<TableCarMain, String> p) -> new ReadOnlyStringWrapper(
      p.getValue().getValue().getCar())); 

    latest.setCellValueFactory((CellDataFeatures<TableCarMain, String> p) -> new ReadOnlyStringWrapper(
      p.getValue().getValue().getLatest())); 

    high.setCellValueFactory((CellDataFeatures<TableCarMain, String> p) -> new ReadOnlyStringWrapper(
      p.getValue().getValue().getHigh())); 

    low.setCellValueFactory((CellDataFeatures<TableCarMain, String> p) -> new ReadOnlyStringWrapper(
      p.getValue().getValue().getLow())); 

// Create Main Nodes 
    final TreeItem<TableCarMain> root = new TreeItem<>(new TableCarMain("Vehicles")); 
    final TreeItem<TableCarMain> nodeAuto = new TreeItem<>(new TableCarMain("AutomaticCar")); 
    final TreeItem<TableCarMain> nodeManual = new TreeItem<>(new TableCarMain("ManualCar")); 


//Child Nodes - Getting data from Excel & creating the child nodes 
for (List<XSSFCell> line : filteredData) { 
     if (line.get(3).getStringCellValue().equals("AutomaticCar")) { 
nodeAuto.getChildren().add(new TreeItem<>(new TableCarMain(line.get(0).getStringCellValue()))); 
     } 
     if (line.get(3).getStringCellValue().equals("ManualCar")) { 
      nodeManual.getChildren().add(new TreeItem<>(new TableCarMain(line.get(0).getStringCellValue()))); 
     } 
} 

root.setExpanded(true); 
    root.getChildren().addAll(nodeAuto , nodeManual); 
tvTree.setRoot(root); 

aşağıdaki kodu bağlı almayı umduğum gerçek zamanlı verileri simüle etmek. Fikir, başlangıç ​​düğmesine bastığımda, Rasgele Sayı değerleri oluşturduğunda, En Son sütundaki değerin değeri göstermesi gerekir. şimdi sütunlara herhangi bir değer geçirerek değilim İçin Yüksek & bunun yanı Düşük Son için

@FXML 
FloatProperty latestProperty= new SimpleFloatProperty(); 
FloatProperty externalDataProperty= new SimpleFloatProperty(); 
private void getData() { 
    latestProperty.bind(externalDataProperty); 

    ObservableList<TableTradeMain> lineData = FXCollections.observableArrayList(); 

    for (List<XSSFCell> line : filteredData) { 
     lineData.add(new TableCarMain(line.get(0).getStringCellValue(), Float.toString(latestProperty.get()))); 
    } 

    Random randomGenerator = new Random(); 
    for (int idx = 1; idx <= 10; ++idx) { 
     externalDataProperty.set(randomGenerator.nextFloat()); 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     } 
} 
+0

Kodun blokları ('uyku()' ler) kullanarak bu sorunu Çözülmüş çalışmıyor Uygulama İş Parçacığı, böylece döngü tamamlanana kadar UI güncellemelerini görmeyeceksiniz. Başka bir deyişle, UI'nizin 10 saniye boyunca donmasına ve ardından döngüde üretilen son değeri göstermesine neden olur. Bu kodu bir arka plan iş parçacığına taşımanız gerekir. –

+0

@James_D Uyku bölümünü gerektiği gibi yorumlamadım, ancak yine de en son başlıklı sütunda çıktı yok. TreeTableView'ı bulamamak için bir hata yapıyorum sanırım – iCoder

+1

Evet ... ağaçtaki herhangi bir şeyin değerlerini güncelliyor musunuz? 'ExternalDataProperty' öğesini her seferinde güncellediğiniz, 'latestProperty' öğesini güncelleyeceğiniz, ancak herhangi bir TableCarMain örneğindeki herhangi bir özelliği güncellemediği görülüyor. Treetable'da görüntülenen model nesnelerindeki özellikleri güncellemeniz gerekir. –

cevap

0

FX üzerinde ListProperty

İlgili konular