Witam!
Od niedawna uczę się programowania i dotarłem właśnie do działu "Aplikacje i aplety". Próbuję napisać aplet wyświetlający napis podany w kodzie html na środku apletu. Poniższy kod bez problemów przechodzi przez kompilację jednak przy próbie uruchomienia apletu efekt nie jest taki jak oczekiwałem.
import javax.swing.JApplet;
import java.awt.*;
public class Aplet extends JApplet{
private String tekst = null;
public int centerWidth(Graphics gDC, String a){
FontMetrics fm = gDC.getFontMetrics();
int strWidth = fm.stringWidth(a);
int x = (getWidth() - strWidth)/2;
return x;
}
public int centerHeight(Graphics gDC){
FontMetrics fm = gDC.getFontMetrics();
int strHeight = fm.getHeight();
int y = (getHeight() +strHeight)/2;
return y;
}
public void init (){
if((tekst = getParameter("tekst"))==null){
tekst = "Nie podano tekstu";
}
}
public void paint (Graphics gDC){
Aplet App = new Aplet();
int x = App.centerWidth(gDC,tekst);
int y = App.centerHeight(gDC);
gDC.clearRect(0,0, getSize().width, getSize().height);
gDC.drawString(tekst,x,y);
}
}
Autor mojego podręcznika zrealizował to zadanie używając kodu poniżej i rzeczywiście wszystko działa.
mport javax.swing.JApplet;
import java.awt.*;
public class Applet extends JApplet {
String tekst = null;
public void init (){
if((tekst = getParameter("tekst"))==null){
tekst = "Nie podano tekstu";
}
}
public void paint (Graphics gDC) {
FontMetrics fm = gDC.getFontMetrics();
int strWidth = fm.stringWidth(tekst);
int strHeight = fm.getHeight();
int x = (getWidth() - strWidth) / 2;
int y = (getHeight() + strHeight) / 2;
gDC.clearRect(0, 0, getSize().width, getSize().height);
gDC.drawString(tekst, x, y);
}
}
Moje pytanie brzmi: dlaczego mój kod nie działa ?? Próbuję znaleźć błąd od kilkudziesięciu minut jednak wydaje mi się, że wszystko powinno działać poprawnie :/
PS.W załączniku znajduje sie efekt działania mojego aplet oraz apletu autora podręcznika