Dodawanie JLabeli zaleznie od dlugosci mapy

0

Witam serdecznie,

Probuje dodawac kolejne JLabele w momencie gdy moja Mapa sie powieksza o kolejne wpisy. Wpisy dodaje za pomoca buttona i action listenera. W terminalu widzę, ze wpisy dodaja się jak należy i moge wyswielic cala mapę. Teraz tak w przypadku gdy jest pierwszy wpis startuje kolejne JFrame z tym jednym wpisem, a gdy dochodza kolejne wpisy chciałbym dodawać kolejne JLabele do tego JFrame "f". Ale wyskakuje blad:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2

Poniżej wrzucam fragment kodu:

public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == button1) ;
        currentdata = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-mm-dd HH:mm:ss");
        licname = nameField.getText();
        //   System.out.println(licname);
        testmap.put(licname, currentdata);
        System.out.println(testmap);
        if (testmap.size() == 1) {
            Rest rest = new Rest();
            try {
                rest.getLicense(licname, currentdata);
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            } catch (XMLStreamException ex) {
                throw new RuntimeException(ex);
            }
        }
        if (testmap.size() >1 ){
            System.out.println("wiecej danych");
            JLabel[] label = new JLabel[testmap.size()];
            for (int i = 0; i <= testmap.size(); i++) {
            label[i] = new JLabel();
            label[i].setIcon(new ImageIcon("C:/Users/Aka/Downloads/app1/app1/src/main/java/com/example/app1/dmsbb/images/tab.jpg"));
            label[i].setFont(new Font("Verdana", Font.PLAIN, 18));
            label[i].setHorizontalTextPosition(JLabel.CENTER);
            label[i].setVerticalTextPosition(JLabel.CENTER);
            label[i].setBounds(10, 140 + (i * 10), 200, 50);
            f.add(label[i]);
            }
        }

Z gory dzieki za pomoc!

0

@kropla512:

Naprawdę brak ci podstawowych postaw, w tym wypadku n/t tablic

A kursor ustawia się sam w linii (prawdopodobnie)
Jakie ma znaczenie, ze wybłagasz, wyłudzisz , wyprosisz załatanie jakiegoś jednego błędu, jak będziesz robił ich dziesiątki ?

0

Kod marny, ale licencjonowany, gratuluję ...

0

@kropla512: Hej :)

  1. Linia 3 - po if masz średnik, ten warunek jest "martwy",
  2. Linia 10 i 20, możesz użyć else if,
  3. Linia 22, jeśli nie czujesz się pewnie z tablicami, doradzam użycie jakiejś kolekcji np. ArrayList,
  4. Linia 23 - nasz problem, warunek powinien być <, w innym wypadku sprawdzasz za dużo,
  5. Zamiast pętli for użyj forEach (zadziała jeśli będziesz korzystać z jakiejś kolekcji jak np. ArrayList) na początku jest to IMO bezpieczniejsze.
1

@kropla512: ty się nie obrażaj tylko zrozum, że masz póki co problemy z podstawowymi rzeczami min:

  1. czytaniem komunikatów błędów -> java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
  2. obsługą tablic
  3. obsługą debbugera

Olej to GUI, zacznij od prostych aplikacji konsolowych i (sądząc po wątku Zapis danej z GET requestu do zmiennej) prostych aplikacji serwerowych wykorzystujących komunikację po http (poczytaj z czym się je tzw. rest api).

Zwyczajnie brakuje Ci póki co podstaw a usilnie brniesz do przodu przez co tego typu problemów jak w tym wątku będziesz mieć dużo ;)

Ze swojej strony polecam kurs z javastart.pl

1 użytkowników online, w tym zalogowanych: 0, gości: 1