Nama kode satu perulangan di dalam TableModel

Saya mencoba menempatkan loop di dalam TableModel untuk mengulang semua artikel di dalam daftar array untuk memasukkan semua baris di dalam tabel sehingga saya dapat menambahkannya ke formulir dan menampilkan semua artikel ke pengguna public class ListArticlesForm extends Form {

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());
}

}


person mohamed lahsoumi    schedule 07.05.2020    source sumber


Jawaban (2)


Anda tidak dapat membuat array sebagai perulangan for di dalam array. Anda harus melakukannya lebih cepat.

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);
person Shai Almog    schedule 07.05.2020

sekarang setelah saya Jalankan proyek, baris-baris tabel ditampilkan dengan benar kecuali peringkat bintang pertunjukan di luar tabel dan di dalam titik dua muncul teks: fungsi untuk pembuatan peringkat bintang adalah :

           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;
}
person mohamed lahsoumi    schedule 08.05.2020