2014-09-26 1 views
0

Я использую функцию оценки элементов управления fx http://fxexperience.com/controlsfx/features/#rating. I'm пытается получить оценочное значение из базы данных для каждого файла. Хотя возвращаемое значение не задано для звезд.значение оценки не установлено

enter image description here

вот мой код:

File apps = new File("D:\\SERVER\\Server Content\\Apps"); 
    File[] applist = apps.listFiles(); 
    ArrayList<File> applistar = new ArrayList<>(); 
    rathboxar = new ArrayList<>(); 

    for (File f : applist) { 
     applistar.add(f); 
    } 

    try { 
     for (File file : applistar) { 
      if (!file.getName().equals("icons")) { 
       String appname = file.getName(); 
       System.out.println("app name:" + appname); 
       *String strat = downloadcontroller.getThatRating(appname);* //retrieving rating value for each file 
       System.out.println("Rating string:" + strat); 
       double ratval = Double.parseDouble(strat); 
       rating = new Rating(); 
       rating.setPartialRating(true); 
       *rating.setRating(ratval);*// setting the value on stars 
       rating.setMaxSize(100, 20); 
       ratinghbox = new HBox(); 
       ratinghbox.getChildren().add(rating); 
       rathboxar.add(ratinghbox); 
      } 
     } 

    } catch (RemoteException ex) { 
     Logger.getLogger(HomeUI_2Controller.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (SQLException ex) { 
     Logger.getLogger(HomeUI_2Controller.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(HomeUI_2Controller.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    File tempfile2 = new File("D:\\client\\Temp\\appicons"); 
    File[] filelist1 = tempfile2.listFiles(); 

    gridpane.setAlignment(Pos.CENTER); 
    gridpane.setPadding(new Insets(20, 20, 20, 20)); 

    gridpane.setHgap(20); 
    gridpane.setVgap(20); 

    ColumnConstraints columnConstraints = new ColumnConstraints(); 
    columnConstraints.setFillWidth(true); 
    columnConstraints.setHgrow(Priority.ALWAYS); 
    gridpane.getColumnConstraints().add(columnConstraints); 

    int imageCol = 0; 
    int imageRow = 0; 

    for (int i = 0; i < filelist1.length; i++) { 
     //System.out.println(filelist1[i].getName()); 

     image = new Image(filelist1[i].toURI().toString()); 

     pic = new ImageView(); 
     pic.setFitWidth(130); 
     pic.setFitHeight(130); 


     pic.setImage(image); 
     vb = new VBox(); 
     *vb.getChildren().addAll(pic, (Button) btnar.get(i), (HBox) rathboxar.get(i));*//adding rathboxar to vbox 

     gridpane.add(vb, imageCol, imageRow); 
     GridPane.setMargin(pic, new Insets(2, 2, 2, 2)); 
     imageCol++; 

     // To check if all the 3 images of a row are completed 
     if (imageCol > 2) { 
      // Reset Column 
      imageCol = 0; 
      // Next Row 
      imageRow++; 
     } 

    } 
+0

Что полученное значение 'ratval' при разобранном его? – SimY4

+0

@ Значение SimY4 ratval равно 4.5 –

+0

@KumaranathFernado хорошо, что должно работать, если только вы не получаете какое-либо исключение или не добавляете 'rathboxar' в другое место – ItachiUchiha

ответ

1

Это ошибка: это довольно ясно из source code for the skin, что когда partialRating установлен в true, он не обрабатывает обновление пользовательского интерфейса, когда рейтинговые изменения программно.

Вы должны подать отчет выпуска на https://bitbucket.org/controlsfx/controlsfx/issues?status=new&status=open

+0

Ahh! Да, это не работает с частичным рейтингом. Я не уверен, как это было незаметно так долго :) – ItachiUchiha

+0

I [опубликовано предлагаемое исправление] (https://bitbucket.org/controlsfx/controlsfx/issue/377/set-rating-doesnt-work-when-partialrating# comment-12591583) для RatingSkin, если вам нужно быстрое исправление. Я бы рекомендовал ждать, по крайней мере, до тех пор, пока Джонатан не выталкивает его на официальное репо. –