2016-01-04 2 views
0

Я пытаюсь создать установщик/Updater для проекта, над которым работает. Моя единственная проблема, с которой я сталкиваюсь, заключается в том, что моя переменная моей панели progess не хочет отображаться на ярлыке: C. Я уже посмотрел и нашел ответ от Себастьяна, который сказал, что myLabel.textProperty().bind(valueProperty); должен работать, но ... ну, вы догадались результат. Eclipse говорит, что мне нужно изменить тип моего int: ObservableValue<? extends String>, и когда я его изменил, он говорит, что мне нужно изменить его на int. Я не знаю, что я должен делать теперь: //Ярлык JavaFX установлен на переменные проблемы

EDIT: Полный код моего контроллера класса

package application; 



import java.io.BufferedOutputStream; 
    import java.io.FileNotFoundException; 
    import java.io.IOException; 
    import java.net.HttpURLConnection; 
    import java.net.URL; 

    import javafx.beans.property.DoubleProperty; 
import javafx.beans.property.SimpleDoubleProperty; 
import javafx.beans.value.ObservableValue; 
import javafx.fxml.FXML; 
import javafx.scene.control.Label; 
import javafx.scene.control.ProgressBar; 

public class Controller { 

@FXML 
ProgressBar pb; 
Label progText; 


public void install(){ 
    new Thread(new Runnable() { 
     @Override public void run() { 
      download(); 

     }}).start(); 
}; 


public void load(){ 
    new Thread(new Runnable() { 
     @Override public void run() { 
      download(); 
      Unzip.extract(); 
      System.out.println("Finished"); 
     }}).start(); 
}; 

public void download(){ 
    try { 
     System.out.println("Start"); 
     URL url = new URL("https://www.dropbox.com/s/27d4us64oqifuph/modpack.zip?dl=1"); 
     HttpURLConnection httpConnection = (HttpURLConnection) (url.openConnection()); 
     long completeFileSize = httpConnection.getContentLength(); 

     java.io.BufferedInputStream in = new  java.io.BufferedInputStream(httpConnection.getInputStream()); 
     java.io.FileOutputStream fos = new java.io.FileOutputStream(
       "modpack.zip"); 
     java.io.BufferedOutputStream bout = new BufferedOutputStream(
       fos, 1024); 
     byte[] data = new byte[1024]; 
     long downloadedFileSize = 0; 
     int x = 0; 
     while ((x = in.read(data, 0, 1024)) >= 0) { 
      downloadedFileSize += x; 

      //calculate progress 
      int cp = (int) ((((double)downloadedFileSize)/((double)completeFileSize)) * 10000); 

      DoubleProperty progress = new SimpleDoubleProperty(0); 



      // update progress bar 
      pb.setProgress(cp*0.0001); 
      progress.setValue(cp*0.0001); 
      progText.textProperty().bind(progress.asString()); 
      bout.write(data, 0, x); 
     } 
     bout.close(); 
     in.close(); 
    } catch (FileNotFoundException e) { 
    } catch (IOException e) { 
    } 
}; 

}

+0

Почему это cp final? – Spooky

+0

А где же вы на этикетке? – hotzst

+0

@hotzst Я редактировал свой пост. –

ответ

0

Создайте DoubleProperty, который привязан к метке и обновляется при обновите панель прогресса.

DoubleProperty progress = new SimpleDoubleProperty(0); 
progText.textProperty().bind(progress.asString()); 

... 
// update progress bar 
pb.setProgress(cp*0.0001); 
progress.setValue(cp*0.0001) 
+0

У меня есть исключение в Thread 4. Ошибка в строке 69, которая является Линией, где я связываю прогресс как String с моей меткой progText. Похоже, мне нужно создать еще одну тему? Код работает в другом классе, но –

+1

@AlexanderKnorr Это звучит как совершенно другая проблема, поэтому, если вы не можете его решить, выполнив поиск на этом сайте (или другими исследованиями), вы должны опубликовать новый вопрос. Возможно, вам захочется прочитать некоторые страницы [help] этого сайта, особенно [«как спросить»] (http://stackoverflow.com/help/how-to-ask). Вы также можете воспользоваться [этим вопросом] (http://stackoverflow.com/questions/3988788/) при чтении стеков стека. –