Vykreslování třídy graphics – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vykreslování třídy graphics – Java – Fórum – Programujte.comVykreslování třídy graphics – Java – Fórum – Programujte.com

 

Johnn195
~ Anonymní uživatel
15 příspěvků
12. 9. 2013   #1
-
0
-

Dobrý den. Pracuji na jednom programu, kde se začíná v menu a po kliknutí na button a chci, aby se mi vykreslily určité objekty, které už jsem si vytvořil v jiné třídě. Problém je, že místo vykreslení mi to jen tak probliklo a nic tam vykreslené nezůstalo. zde kód

CardLayout card = (CardLayout)(jPanel3.getLayout());
card.next(jPanel3);
polehodnot.cleanValue();
mrizka.paintComponent(jPanel2.getGraphics());

Toto je vnitřek metody která se vykoná po kliknutí na button. Přepne se do dalšího panelu v Layoutu, kde se má vykreslit mrizka. To je v pořádku. To se přepne, ale to, co se má vykreslit pod mrizkou se nevykreslí, maximálně jen problikne.

Avšak podařilo se mi to "obejít" jednoduše tak, že před řádkem jsem měl umístěný JOptionPane. Pak kód vypadá takto

CardLayout card = (CardLayout)(jPanel3.getLayout());
card.next(jPanel3);
polehodnot.cleanValue();
JOptionPane.showMessageDialog(newGame1, "Zvolil/a jste si hru pro jednoho hráče", "Nová hra", JOptionPane.INFORMATION_MESSAGE);
mrizka.paintComponent(jPanel2.getGraphics());

A toto mi správně funguje! Všechno se správně vykreslí, když kód vypadá takto.

Problém je, že nechápu proč tomu tak je a také to, že bych se toho JOptionPane potřeboval zbavit, ale potřebuji zachovat funkčnost.

Budu vděčný, kdyby mi to někdo dokázal objasnit a pomoci :)

Nahlásit jako SPAM
IP: 195.26.25.–
liborb
~ Redaktor
+18
Guru
13. 9. 2013   #2
-
0
-

Vykreslení se provádí v paint, takže pokud ho uděláš někde jinde, tak to tam vydrží maximálně do dalšího překreslení (proto to bliknutí). Jinak řečeno stisk tlačítka by měl způsobit např. nahození nějakého atributu a vyvolat překreslení. V paint se budeš koukat na ten atribut a když bude nahozený, tak provedeš to vykreslení, které teď děláš v reakci na stisk tlačítka.

Nahlásit jako SPAM
IP: 188.75.135.–
Johnn195
~ Anonymní uživatel
15 příspěvků
13. 9. 2013   #3
-
0
-

#2 liborb
Tohle i teoreticky chápu, ale nevím, jak přesně bych ten kód měl přesně upravit. A také mi nedává smysl to s tím JOpionPane, když tam je, tak proč se to vykreslí?

Ještě sem hodím tu metodu paintComponent

public void paintComponent(Graphics g) {
        for (int x = 0; x < 450; x += 30) {
            g.drawRect(x, 0, 30, 30);
            
            for (int y = 0; y < 450; y += 30) {
                g.drawRect(x, y, 30, 30);
            }
        }

Jinak když vyhodím přepnutí layoutu a kreslím do jPanel1, kde mám to menu, tak se to vykreslí bez problému.

Nahlásit jako SPAM
IP: 195.113.165.–
goddard
~ Anonymní uživatel
41 příspěvků
13. 9. 2013   #4
-
0
-

kdyz tam mas ten option pane, tak se ceka na udalost na / v nem a zbytek neni potreba prekreslovat. v moment kdy to odkliknes, tak se prekresli zbytek a tvoje grafika zmizi z duvodu ktery psal liborb.

Nahlásit jako SPAM
IP: 94.112.88.–
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, 42 hostů

Podobná vlákna

Graphics — založil RePRO

Graphics x Graphics2D — založil sirek

Nejde Graphics Window — založil Quikc

Kde sehnat graphics.h? — založil graphics

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ý