Uprzejmie proszę forumowiczów o wytłumaczenie mi dlaczego jeżeli wywołuję metodę "przyciskStart" po repaint to repaint nie przemalowuje tylko uruchamia się wywołana metoda "przyciskStart", a jeżeli nie wywołuję metody "przyciskStart" to repaint działa poprawnie?
<code = java>
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.*;
public class Przyklad extends java.applet.Applet {
Image obrazek1;
Button przycisk;
boolean ps = false;
boolean pol = false;
String [] tab = {"obraz1.jpg", "obraz2.jpg", "obraz3.jpg", "obraz4.jpg", "obraz5.jpg", "obraz6.jpg"};
public void init () {
setBackground(new Color(153, 255, 255));
obrazek1 = getImage(getCodeBase(), "poczatek.jpg");
warstwa();
}
public void paint(Graphics g) {
g.drawImage(obrazek1, 40, 20, this);
}
public void warstwa() {
przycisk = new java.awt.Button();
setLayout(null);
addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
klikMyszy(evt);
}
}
);
przycisk.setFont(new java.awt.Font ("Dialog", 1, 14));
przycisk.setLabel("START");
przycisk.setLocation(20,350);
przycisk.setSize(160,50);
przycisk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
przyciskStart(evt);}
}
);
add(przycisk);
}
public void klikMyszy(java.awt.event.MouseEvent evt) {
if(evt.getX()>40&&evt.getX()<440 && evt.getY()>20&&evt.getY()<320){//współrzędne na obrazku
pol=true;
pole();}
else{
pol=false;
pole();
}
}
public void przyciskStart(java.awt.event.ActionEvent evt) {
if(ps == true){
try{Thread.sleep(2000);} catch (InterruptedException exc){}//usypianie wątku
}
Random los = new Random();
int liczba1 = los.nextInt(tab.length);
obrazek1 = getImage(getCodeBase(), tab[liczba1]);
repaint();
}
public void pole() {
if(pol==true){
obrazek1 = getImage(getCodeBase(), "wynik1.jpg");
ps = true;
repaint();
// przyciskStart(null);
}
else{
obrazek1 = getImage(getCodeBase(), "wynik2.jpg");
ps = true;
repaint();
//przyciskStart(null);
}
}
}