Avatar
3012
Člen
Avatar
3012:22. července 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. července 21:19
Avatar
3012
Člen
Avatar
3012:22. července 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. července 21:37
Avatar
Odpovídá na 3012
Matúš Olejník:22. července 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í
+1 bodů
Řešení problému
Nahoru Odpovědět 22. července 23:32
/* I am not sure why this works but it fixes the problem */
Avatar
3012
Člen
Avatar
3012:23. července 11:45

ďakujem ti, funguje to perfektne

 
Nahoru Odpovědět  +1 23. července 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.