Špatné vykreslování okna – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Špatné vykreslování okna – Java – Fórum – Programujte.comŠpatné vykreslování okna – Java – Fórum – Programujte.com

 

Hoostee
~ Anonymní uživatel
3 příspěvky
27. 11. 2015   #1
-
0
-

Ahoj,

zkoušim si vykreslit grafy ve swingu, ale mám jeden problém, grafy se normálně vykreslí, ale když pak okno s grafy dám na lištu a pak zpět, tak pozadí zčerná a znova se provede "animace", nevíte co s tim?

Kód: 

Připojen obrázek.

Správné první vykreslení:

Připojen obrázek.

Vykreslení po hození na lištu a zpět: 

Připojen obrázek.

Nahlásit jako SPAM
IP: 89.103.76.–
Kit+15
Guru
27. 11. 2015   #2
-
0
-

#1 Hoostee
Nebylo by špatné, kdybys sem postnul i zdroják problémového kódu.

Asi jsi zapomněl nastavit barvu pozadí a uložit výsledný obrázek.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Hoostee
~ Anonymní uživatel
3 příspěvky
27. 11. 2015   #3
-
0
-

Jako zdroják v textové podobě?

 Tady je

class Kresleni extends JFrame{
	private int[] posl1;
	private int[] posl2;
	private int sirka;
	Kresleni(int[] posl1, int[] posl2){
		sirka = 30 * posl1.length + 5;
		this.posl1 = posl1;
		this.posl2 = posl2;
		setTitle("Grafy");
		setSize(sirka, 600);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setResizable(false);
	}
	public void paint(Graphics g){
		getContentPane().setBackground(Color.YELLOW);
		Graphics2D g2 = (Graphics2D) g;
		g2.drawLine(0, 300, sirka, 300);
		g2.setColor(Color.BLUE);
		for (int i = 0; i < posl1.length; i++){
			g2.fillRect(30*i + 3, (300-(posl1[i]*2)), 29, (posl1[i]*2));
		}
		for (int i = 0; i < posl1.length; i++){
			g2.setColor(Color.RED);
			g2.fillRect(30*i + 3, (600-(posl2[i]*2)), 29, (posl2[i]*2));
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
}

a barva se nastavuje pomocí getContentPane().setBackground(Color.WHITE);?

Protože když to hodim do konstruktoru, tak se barva pozadí nezmění a když to hodim to metody paint, tak se nejdřív vykreslí grafy a potom se změní celý okno v barvu toho pozadí.

A jak docílím toho uložení obrázku?

Nahlásit jako SPAM
IP: 89.103.76.–
Hoostee
~ Anonymní uživatel
3 příspěvky
27. 11. 2015   #4
-
0
-

btw. Nechtěně jsem zkopíroval zdroják, ve kterém zkoušim nastavovat to pozadí v metodě paint

Nahlásit jako SPAM
IP: 89.103.76.–
Kit+15
Guru
27. 11. 2015   #5
-
0
-

#3 Hoostee
Jak to tak zkouším, tak z toho mám pocit, že to není chyba, ale vlastnost.

Nastavení pozadí - stačí doplnit jeden řádek: 

setTitle("Grafy");
setBackground(Color.YELLOW);
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
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, 4 hosté

Podobná vlákna

Vykreslování objektů — založil delicacyy

Vykreslování grafů — založil Jay

Vykreslování v assembleru — založil maherik

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ý