Search code examples
javajavafxratingcontrolsfx

rating value not set


i'm using rating feature of controlsfx http://fxexperience.com/controlsfx/features/#rating .i'm attempting to get rating value from database for a each file. Although the value returned is not set on the stars.

enter image description here

here's my code:

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++;
        }

    }

Solution

  • It's a bug: it's fairly clear from the source code for the skin that when partialRating is set to true, it doesn't handle updating the UI when the rating changes programmatically.

    You should file an issue report at https://bitbucket.org/controlsfx/controlsfx/issues?status=new&status=open