首页 > 解决方案 > 如何在 tableView 列中将浮点值更改为评级星(jfoenix 的评级)表示?

问题描述

我正在尝试将我的 tableView 的评级列的表示(请看图 1) 更改为 jfoenix 库的评级星以获得更好的表示 这里是我的表视图的代码(在控制器中):
在此处输入图像描述

@FXML
    public void initialize(URL url, ResourceBundle rb)  {

        
        nom_client.setCellValueFactory(new PropertyValueFactory<Review, String>("nom_client_review"));
        date_review.setCellValueFactory(new PropertyValueFactory<Review, String>("date_review")); 
        descrip_review.setCellValueFactory(new PropertyValueFactory<Review, String>("description_review"));
        rating.setCellValueFactory(new PropertyValueFactory<Review, Float>("rating"));
        
        try {
            ObservableList<Review> reviewlist = ReviewCrud.getAllRecords();
            
            
            populateTable(reviewlist);
            

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

    }
private void populateTable(ObservableList<Review> reviewlist) {
        reviewtable.setItems(reviewlist);
    }

请注意,我不允许使用 simplefloatproperty,这就是为什么我在Review类中的评分设置为浮动
在我用来从数据库获取数据的代码下方:

    public static ObservableList<Review> getAllRecords() throws ClassNotFoundException, SQLException {

        Connection cnnx = ReviewConnection.getInstance().getCnx();
        String requete = "SELECT * FROM review_client ";
        try {
            Statement st = cnnx.createStatement();
            ResultSet rs = st.executeQuery(requete);

            ObservableList<Review> reviewList = getReviewObjects(rs);
            return reviewList;
        } catch (SQLException ex) {
            System.err.println(ex.getMessage());
            throw ex;
        }
    }

    private static ObservableList<Review> getReviewObjects(ResultSet rs) throws ClassNotFoundException, SQLException {

        try {
            ObservableList<Review> reviewList = FXCollections.observableArrayList();
            while (rs.next()) {
                Review r = new Review();
                r.setNom_client_review(rs.getString("nom_client_review"));
                r.setDate_review(rs.getString("date_review"));
                r.setDescription_review(rs.getString("description_review"));
                r.setRating(rs.getFloat("rating"));
                reviewList.add(r);
            }
            return reviewList;
        } catch (SQLException ex) {
            System.err.println(ex.getMessage());
            throw ex;
        }
    }

我唯一的目标是将评级列的浮点值转换为 jfoenix 的星星
, 如果有人知道如何请帮助我
,将不胜感激

标签: javajavafxtableviewjfoenix

解决方案


你看过这个解决方案吗:Turn a number into star rating display using jQuery and CSS

$.fn.stars = function() {
    return $(this).each(function() {
        // Get the value
        var val = parseFloat($(this).html());
        // Make sure that the value is in 0 - 5 range, multiply to get width
        var size = Math.max(0, (Math.min(5, val))) * 16;
        // Create stars holder
        var $span = $('<span />').width(size);
        // Replace the numerical value with stars
        $(this).html($span);
    });
}

此代码在 jQuery 中,但您可以轻松地遵循逻辑。


推荐阅读