• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z wyświetleniem obrazka (

Object Storage Arubacloud
0 głosów
314 wizyt
pytanie zadane 29 grudnia 2017 w Java przez rubesom Obywatel (1,690 p.)

Robię wszystko tak jak mówią internetowe poradniki i książki, a pomimo to nie mogę wyświetlić obrazka:

public class RysowanieTest extends JPanel
{

	public void paintComponent(Graphics g)
	{
//		g.setColor(Color.ORANGE);
//		g.fillRect(20, 50, 100, 100);
		Image obrazek = new ImageIcon("test2.PNG").getImage();
		g.drawImage(obrazek, 3, 4, this);
	}
	public static void main(String[] args) 
	{
	RysowanieTest gui1 = new RysowanieTest();
	JFrame ramka = new JFrame();
	
	ramka.setSize(300, 300);
	ramka.setVisible(true);
	ramka.add(gui1);
	}
}

Sam plik jest w folderze z klasą "RysowanieTest", coś gdzieś pomijam?

3 odpowiedzi

0 głosów
odpowiedź 29 grudnia 2017 przez ProgramistaTomko Obywatel (1,040 p.)

może ramka.repaint(); ;)

Ja to robię nie na frame a na jLabel czyli:

BanerImageLabel = new javax.swing.JLabel(new ImageIcon(ImageIO.read(this.getClass().getResource("/resources/baner.jpg"))));

i ten baner umieszczam w jPanel ( u Ciebie może być w jFrame).

Jeżeli to nie pomoże sprawdz tu

 

0 głosów
odpowiedź 29 grudnia 2017 przez softkdp Obywatel (1,060 p.)

Sprawdź czy metoda paintComponent wgl się wywołuje. Z mojego doświadczenia z obrazkami wynika, że zwykle trzeba wywołać jakąś metodę repaint, żeby wykonało się rysowanie. Wygooglałem, że klasa JFrame posiada taką metodę. Spróbuj ramka.repaint();

komentarz 29 grudnia 2017 przez rubesom Obywatel (1,690 p.)

ramka.repaint(); nic nie pomaga.  Sprawdziłem i paintComponent działa, bo ryzuje mi taki kwadrat:

g.setColor(Color.ORANGE);
g.fillRect(20, 50, 100, 100);

Kiedyś olałem sprawę jeżeli chodzi o wyświetlanie obrazków, bo miałem taki sam problem a teraz jest mi to potrzebne.

0 głosów
odpowiedź 29 grudnia 2017 przez Mateusz51 Nałogowiec (28,180 p.)
public class RysowanieTest extends JPanel{

	final Image obrazek; 
	
	public RysowanieTest() throws Exception{
		obrazek = ImageIO.read(new File("test2.PNG"));
	}
 
    public void paintComponent(Graphics g){
//      g.setColor(Color.ORANGE);
//      g.fillRect(20, 50, 100, 100);
       
        g.drawImage(obrazek, 3, 4, this);
    }
    public static void main(String[] args) throws Exception {
		RysowanieTest gui1 = new RysowanieTest();
		JFrame ramka = new JFrame();		 
		ramka.setSize(300, 300);
		ramka.setVisible(true);
		ramka.add(gui1);

    }
}

Image Icon nie służy do tego aby pobierać z dysku obrazki:) Plus nie polecam w metodach paint pobierać obrazki i wykonywać długie funkcje bo użytkownik straci responsywność aplikacji

Podobne pytania

0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 1 lutego 2022 w Java przez Arek Kowalski Początkujący (450 p.)
0 głosów
1 odpowiedź 239 wizyt
0 głosów
1 odpowiedź 361 wizyt
pytanie zadane 21 maja 2018 w Java przez Paweł Celuch Początkujący (420 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...