Pracuję nad automatem w Javie i do tej pory stworzyłem przycisk, który losowo wygeneruje dwa obrazy. Mój kod się kompiluje, ale kiedy go uruchomię, wszystkie rzeczy, które umieściłem w metodzie malowania, nie pojawią się. Czy jest coś, czego mi brakuje? Dzięki za pomoc, a oto niektóre z mojego kodu.Jak używać metody malowania w JPanelu
public void paint(Graphics g) {
super.paintComponents(g);
g.drawString("Int 1 is" + int1,30,30);
g.drawString("Int 2 is" + int2,30,80);
switch (int1) {
case 0:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img, 300, 500, this);
break;
case 1:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img2,300,500,this);
break;
case 2:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img3,300,500,this);
break;
case 3:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img4,300,500,this);
break;
case 4:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img5,300,500,this);
break;
case 5:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img6,300,500,this);
break;
case 6:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img7,300,500,this);
break;
case 7:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img8,300,500,this);
break;
case 8:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img9,300,500,this);
break;
case 9:
g.setColor(Color.white);
g.fillRect(300,300,300,500);
g.drawImage(img10,300,500,this);
break;
}
switch (int2) {
case 0:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img, 800, 500, this);
break;
case 1:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img2,800,500,this);
break;
case 2:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img3,800,500,this);
break;
case 3:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img4,800,500,this);
break;
case 4:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img5,800,500,this);
break;
case 5:
\ g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img6,800,500,this);
break;
case 6:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img7,800,500,this);
break;
case 7:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img8,800,500,this);
break;
case 8:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img9,800,500,this);
break;
case 9:
g.setColor(Color.white);
g.fillRect(300,300,800,500);
g.drawImage(img10,800,500,this);
break;
}
this.setVisible(true);
}
W przypadku 'Swinga' nie należy bawić się metodą 'farby' dla takiego zadania. Zamiast tego nadpisuj 'paintComponent (...)' metodę jakiegoś 'JComponent/JPanel', aby zrobić rzeczy związane z malowaniem. Więcej informacji na [Performing Custom Painting] (https://docs.oracle.com/javase/tutorial/uiswing/painting/). Czy przeczytać rozwiązywanie wspólnych problemów, pierwszy problem będzie odpowiedzieć na to, co robisz źle. Mam nadzieję, że to pomoże :-) –
Yikes, twoja metoda 'paint' nazywa' super.paintComponents (...) 'bardzo niebezpieczną rzeczą do zrobienia.Proszę przeczytać tutoriale malarskie na ten temat, ponieważ wszystko to jest bardzo dobrze wyjaśnione i zgadza się dokładnie z tym, co @nIcEcOw stwierdza powyżej. Ja po prostu zamieniłbym ImageIcons wyświetlane w JLabel. –
Zobacz edytuj, aby odpowiedzieć. –