Layout Managery – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Layout Managery – Java – Fórum – Programujte.comLayout Managery – Java – Fórum – Programujte.com

 

BigBear0
Stálý člen
22. 1. 2010   #1
-
0
-

Ahojte, zkousel jsem pochopit, jak se v Jave pracuje s jednotlivymi layout managery... na mnoha ceskych i anglickych serverech jsem se docetl, ze mam pouzivat radeji tyto ctyri zakladni: BorderLayout, BoxLayout, FlowLayout a GridLayout, kombinovat je, ze se tim vyhnu vsem problemum a zvladnu temer vse a to citelneji, nez se slozitejsimi layout managery jako GridBagLayout, ci GroupLayout... nejak jsem ale nepochopil, jak s managery pracovat... chtel bych napriklad udelat (zdanlive?) jednoduchou vec... mam frame (JFrame - s nastavenym minimum size na 640x480), v nem panel (JPanel) a v nem tri tlacitka (JButton)... dve z nich chci velike 250x75, umistene pod sebou primo uprostred okna a jedno chci vpravo dole odsazene od spodniho okraje o 30px a od praveho take o 30px... jak to mam udelat? Mohli byste mi prosim napsat tento kod? Treba to podle tohoto prikladu pochopim lepe a dojdou mi i dalsi veci... mockrat dekuji.

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
liborb
~ Redaktor
+18
Guru
22. 1. 2010   #2
-
0
-

Každý z těch manažerů nějakým způsobem rozděluje danou oblast, která mu je vymezena. BorderLayout rozděluje oblast na 5 částí (horní, dolní, levá, pravá, střed), GridLayout rozděluje oblast "tabulkou" (mřížkou) na zvolený počet částí atd.

To doporučení je v podstatě oprávněné, protože s těmi jednoduchými layouty uděláš v podstatě stejnou práci jako s těmi složitými, jenom je musíš vhodně kombinovat.

A to bude asi tvůj problém, že si nevíš rady jak je kombinovat. Předpokládám, že použít každý zvlášť bys dokázal. Minimálně si to můžeš vyzkoušet, což vůbec není od věci. Kombinování se vlastně sestává z toho, že skládáš panely (i do sebe) a teprve do nich vkládáš další komponenty (tlačítka atd.). Když to budeš zkoušet (zejména vkládání panelů do panelů), tak si je různě obarvuj a tím uvidíš, jak je velký, co je jak rozděleno apod.

Takže tvůj případ by se dal řešit třeba takto. Potřebuješ dostat 2 tlačítka doprostřed a jedno vpravu dolu. Neboli první rozdělení bude BorderLayoutem. Do jednotlivých částí umístíš panely (zkus různé barvy). Tomu středovému dáš GridLayout s počtem řádek roven 2 a počtem sloupců roven 1 a vložíš tam ty 2 tlačítka. Spodnímu (dlouhého) panelu nastavíš zase třeba GridLayout s počtem řádek 2 a počtem sloupců 2. Do první buňky vložíš to tlačítko, do druhé panel veliký šiorký 30px a do druhé řádky vložíš 2 panely vysoké 30px.

Samozřejmě to není celé (musel bych to vidět), ale jde o to pochopit princip, několikráte si to zkusit, udělat pár experimentů a pak už budeš schopen dělat rozvržení sám.

Nahlásit jako SPAM
IP: 85.207.166.–
BigBear0
Stálý člen
22. 1. 2010   #3
-
0
-

ok, budu zkouset, dekuji

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
BigBear0
Stálý člen
22. 1. 2010   #4
-
0
-

Tak uz jsem prisel na to, proc mi to neslo... obarvil jsem si jednotlive "bunky" a kouknul, co se deje... ma filozofie byla - mit frame, v nem jeden hlavni panel... do nej jsem bez jakehokoliv layout manageru (coz znamena, ze se tam dal defaultni - FlowLayout) vlozil dalsich x panelu, ktere meli znazornovat jednotlive stranky... kliknu-li na polozku menu, tak se vsechny daji invisible a ten jeden, pozadovany, se da visible... jenze to je ocividne spatna metoda, protoze diky tomu, ze byly ve FlowLayoutu, tak ty panely nebyly roztazene pres cely frame (resp. ten hlavni panel) a kdyz je dam do BorderLayoutu, logicky vsechny do CENTER, tak se mi nezobrazi ani jeden... vicemene tedy chapu, jak se funguje s layouty a uz chapu, proc to nefunguje mne... prosim tedy jeste o jednu radu... mam vytvorenych x panelu, ktere predstavuji jednotlive stranky aplikace... kliknu-li na tlacitko (ci polozku menu), chci, aby se mi zobrazila urcita stranka (urcity panel)... jednotlivych stranek neni moc - cca do deseti... jak bych to mel nejlepe udelat? (pomoci panelu a nastavovani viditelnosti asi ne, ze? :-( )... mockrat dekuji za radu.

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
liborb
~ Redaktor
+18
Guru
22. 1. 2010   #5
-
0
-

Snad jsem dobře pochopil o co ti jde. Takže to klíčové slovo je CardLayout.

Nahlásit jako SPAM
IP: 85.207.166.–
BigBear0
Stálý člen
22. 1. 2010   #6
-
0
-

jooo... to je ono... to se pouziva na zalozky, ze? super, diky... ze me to nenapadlo driv... vyzkousim, ale predpokladam, ze to bude vpoho :-)

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
BigBear0
Stálý člen
22. 1. 2010   #7
-
0
-

Jeste jednou zdravim... uz jsem na tom dobre, temer vse jsem si rozvrhl, ale uz asi dve hodiny badam nad jednou veci... jaky layout manager mam pouzit, kdyz chci ctyri komponenty (panely) pod sebou, z toho prvni, druhy a ctvrty chci vysoke napr. 40px a ten treti, at se roztahne do zbytku? Zkusil jsem pouzit ruzne BoxLayout a GridLayout a jeste dalsi (zoufale pokusy) kombinace, ale nejak se mi stale nedari to udelat tak, aby byl prvni, druhy a ctvrty vysoky tak, jak zadam a treti se roztahl... pripadne me zkuste navest, at se s tim netrapim tak moc ;-)... mockrat dekuji.

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
liborb
~ Redaktor
+18
Guru
23. 1. 2010   #8
-
0
-

Už to asi máš, ale .....
Ten tvoje rozložení by se dalo řešit jedním BorderLayoutem (horní, střed, dolní) a buď do horní části panel s GridLayoutem (2 řádky) nebo do středu dát panel opět s BorderLayoutem a použít u něj jen horní a střed.

Nahlásit jako SPAM
IP: 195.189.142.–
liborb
~ Redaktor
+18
Guru
23. 1. 2010   #9
-
0
-

Už to asi máš, ale .....
Ten tvoje rozložení by se dalo řešit jedním BorderLayoutem (horní, střed, dolní) a buď do horní části panel s GridLayoutem (2 řádky) nebo do středu dát panel opět s BorderLayoutem a použít u něj jen horní a střed.

Nahlásit jako SPAM
IP: 195.189.142.–
BigBear0
Stálý člen
23. 1. 2010   #10
-
0
-

jeste to nemam, ale uz mi to pomalu zacne dochazet, jen to musim vic a vic pouzivat :-)... kazdopadne opet dekuji :-)

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
BigBear0
Stálý člen
23. 1. 2010   #11
-
0
-

Opet ahojte, mam dalsi dotazek, tentokrat mi zatim vse funguje, ale neco se mi nelibi a nevim, jak to zmenit (jestli se to vubec zmenit da)... mam panel (tento nazvu panel1), pouziji layout manager BorderLayout a do PAGE_START umistim dalsi panel (tento nazvu panel2)... vim, ze z logiky toho, jak vypada cast PAGE_START plyne, ze sirka komponenty panel2 je pres celou sirku komponenty panel1, ale chci-li nastavit vysku komponenty panel2, tak vim jen o jednom zpusobu a to nastavit size, minimumSize, preferredSize, nebo maximumSize... takto ale musim nastavit i sirku i vysku... kod

panel1.getSize();
ale vraci 0... takze kod
panel2.setPreferredSize(new Dimension(panel1.getSize().width, 100));
je stejny jako
panel2.setPreferredSize(new Dimension(0, 100));
a to je preci divne, ne?Jak mam tedy nastavit jen vysku? Jde to? Moc se mi nelibi nastavovat sirku na 0 a vysku jak chci, a to prestoze to funguje... nepujde-li to jinak, je to jasne... proste to nebudu resit ;-)... ale jde to jinak? jak? Dekuji

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
liborb
~ Redaktor
+18
Guru
25. 1. 2010   #12
-
0
-

Jestli se nepletu, tak tohle je stejné:



setPreferredSize(null);

setPreferredSize(new Dimension(0, 0));


a mělo by to znamenat, že se velikost nastavuje automaticky. Takže pro jeden parametr to asi bude fungovat, tak jak chceš a jak se ti to nelíbí :smile1: . A jestli to funguje, tak opravdu není co řešit.

Nahlásit jako SPAM
IP: 85.207.166.–
BigBear0
Stálý člen
25. 1. 2010   #13
-
0
-

Ok, dekuji :-)

Nahlásit jako SPAM
IP: 88.103.186.–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
auditor
~ Anonymní uživatel
1 příspěvek
29. 4. 2010   #14
-
0
-

Mužete mi prosím někdo poradit, jak zadám paletu barev(64) do gridlayout manageru? Děkuji moc!

Nahlásit jako SPAM
IP: 85.160.62.–
liborb
~ Redaktor
+18
Guru
29. 4. 2010   #15
-
0
-

Mohl by si víc specifikovat, čeho že chceš dosáhnout?

Nahlásit jako SPAM
IP: 91.203.96.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 196 hostů

Podobná vlákna

Layout — založil darkerboy

3 layout — založil Steeta

Layout — založil Nicolas

Layout — založil Honza

Layout v css — založil Marek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý