Кодовое имя al oop внутри TableModel - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь разместить al oop внутри TableModel до l oop всех статей внутри Arraylist, чтобы вставить все строки внутри таблицы, чтобы я мог добавить его в форму и показать все статьи в пользователь publi c класс ListArticlesForm расширяет форму {

public ListArticlesForm(Form previous) {
    setTitle("List all articles");
    SpanLabel sp = new SpanLabel();
    sp.setText(ServiceTask.getInstance().getAllArticles().toString());

    ArrayList<Articles> articles = ServiceTask.getInstance().getAllArticles();

    TableModel model = new DefaultTableModel(new String[]{"name", "description", "label", "quantity", "rating", "rate"}, 

            new Object[][]{
        {
           // I WANT TO PLACE A FOR HERE (this is showing only the first row ! 
            articles.get(0).getName(), articles.get(0).getDescription(), articles.get(0).getLabel(), articles.get(0).getQuantity(), articles.get(0).getRating(), add(createStarRankSlider())

        },});

    Table table = new Table(model);
    add(table);
    getToolbar().addMaterialCommandToLeftBar("", FontImage.MATERIAL_ARROW_BACK, e -> previous.showBack());
}

}

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Вы не можете создать массив как для l oop внутри массива. Вам нужно сделать это на строчку раньше.

Object[][] rows = new Object[articles.size()][];

for(int iter = 0 ; iter < rows.length ; iter++) {
    rows[iter] = new Object[] {
         articles.get(iter).getName(), articles.get(0).getDescription(), articles.get(0).getLabel(), articles.get(0).getQuantity(), articles.get(0).getRating(), add(createStarRankSlider())
    };
}

TableModel model = new DefaultTableModel(new String[]{"name", "description", "label", "quantity", "rating", "rate"}, rows);
0 голосов
/ 09 мая 2020

теперь после запуска проекта строки таблицы отображаются правильно, за исключением звездочек, которые отображаются за пределами таблицы, а внутри столбца появляется текст: функция для создания звездного ранга:

           private Slider createStarRankSlider(int id) {
    Slider starRank = new Slider();
    starRank.setEditable(true);
    starRank.setMinValue(0);
    starRank.setMaxValue(10);
    int fontSize = Display.getInstance().convertToPixels(3);
    Font fnt = Font.createTrueTypeFont("Handlee", "Handlee-Regular.ttf").
            derive(fontSize, Font.STYLE_PLAIN);
    Style s = new Style(0xffff33, 0, fnt, (byte) 0);
    Image fullStar = FontImage.createMaterial(FontImage.MATERIAL_STAR, s).toImage();
    s.setOpacity(100);
    s.setFgColor(0);
    Image emptyStar = FontImage.createMaterial(FontImage.MATERIAL_STAR, s).toImage();
    initStarRankStyle(starRank.getSliderEmptySelectedStyle(), emptyStar);
    initStarRankStyle(starRank.getSliderEmptyUnselectedStyle(), emptyStar);
    initStarRankStyle(starRank.getSliderFullSelectedStyle(), fullStar);
    initStarRankStyle(starRank.getSliderFullUnselectedStyle(), fullStar);
    starRank.setPreferredSize(new Dimension(fullStar.getWidth() * 5, fullStar.getHeight()));
    starRank.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {
            ServiceTask.getInstance().UpdateRank(id,starRank.getIncrements());
             Dialog.show("Success","thank you for rating our product",new Command("OK"));

        }
    });

    return starRank;
}
...