0

我正在使用controlsfx http://fxexperience.com/controlsfx/features/#rating的评级功能。我正在尝试从数据库中获取每个文件的评级值。虽然返回的值没有设置在星星上。

在此处输入图像描述

这是我的代码:

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

    }
4

1 回答 1

1

这是一个错误:从皮肤的源代码中可以清楚地看出,当partialRating设置为时true,它不会在评级以编程方式更改时处理更新 UI。

您应该在https://bitbucket.org/controlsfx/controlsfx/issues?status=new&status=open提交问题报告

于 2014-09-26T13:10:43.423 回答