IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: odriadkovanie a zarovnanie lebelov

Aktivity
Avatar
3012
Člen
Avatar
3012:22.7.2018 21:19

ďobrý večer, chcel by som sa opýtať kde robým chybu, výsledok tohto kódu:

int maxTextDlzka = 200;
                int textDlzka = parameter.length(); //System.out.println(textDlzka);
                String medzera = " ";

                JLabel text = new JLabel(parameter);
                panel.add(text);

= 1. obrázok

výsledkom upraveneho kodu:

int maxTextDlzka = 200;
                int textDlzka = parameter.length(); //System.out.println(textDlzka);
                String medzera = " ";
                while (textDlzka != maxTextDlzka){
                parameter = parameter + medzera;
                textDlzka = parameter.length();
                }
                //System.out.println(textDlzka);
                JLabel text = new JLabel(parameter);
                panel.add(text);

je obrazok 2

cieľom je dosihnuť odriadkovania a zobrazovania labelov z lava doprava pričom, budú zarovnane v jednom stĺpci, nechápem prečo to nefunguje , keď pri testovani druhého kodu konzola vypýše že každý riadok má 200 znakov a mali by byť teda rovnomerne rozmiestnené.

za každú pomoc ďakujem.

 
Odpovědět
22.7.2018 21:19
Avatar
3012
Člen
Avatar
3012:22.7.2018 21:37

a skoro som zabudol, toto je textový súbor z ktoreho text čítam:

riadok 1 obsahuje tento text
riadok 2 obsahuje tento text
riadok 3 obsahuje tento text
riadok 4 obsahuje tento text
riadok 5 obsahuje tento text
riadok X obsahuje tento text
riadok X obsahuje najdlhsi text zo vsetkych
riadok X obsahuje dlhsi text ako ine
riadok X obsahuje
riadok X obsahujetxt:riadok X obsahujetxt:riadok X obsahuje
 
Nahoru Odpovědět
22.7.2018 21:37
Avatar
Odpovídá na 3012
Matúš Olejník:22.7.2018 23:32

Ak použiješ správny layout, na ktorý ťa odkázal Lubor Pešek v predchádzajúcom vlákne, tak by sa to malo vyriešiť oveľa jednoduchšie.

panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
.
.
for(String parameter : parameters) {
    panel.add(new JLabel(parameter));
}

PS: je jasné že System.out.prin­tln(textDlzka) ti vždy vypíše, že riadok má 200 písmen, keďže je to priamo za cyklom ktorým iteruješ dokým textDlzka != maxTextDlzka ;)

PS2: String v Jave je immutable trieda ktorej inštancia nemôže byť editovaná, takže keď veľa krát v cykle robíš takéto niečo parameter = parameter + medzera tak stále vytváraš nový a nový String ktorý je pozmenený o tú medzeru a preto je lepšie v takýchto prípadoch používať StringBuilder ktorý je mutable a o ktorom už si viacej prečítaj v dokumentácii.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
22.7.2018 23:32
/* I am not sure why this works but it fixes the problem */
Avatar
3012
Člen
Avatar
3012:23.7.2018 11:45

ďakujem ti, funguje to perfektne

 
Nahoru Odpovědět
23.7.2018 11:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.