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

Problem z wyświetleniem obrazka (

VPS Starter Arubacloud
0 głosów
310 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ź 120 wizyt
pytanie zadane 1 lutego 2022 w Java przez Arek Kowalski Początkujący (450 p.)
0 głosów
1 odpowiedź 227 wizyt
0 głosów
1 odpowiedź 359 wizyt
pytanie zadane 21 maja 2018 w Java przez Paweł Celuch Początkujący (420 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...