Я ожидал, что этот апплет, чтобы писать х = 0 и х = 10, но это не так:Как работает java paint()?
import java.applet.*;
import java.awt.*;
/*
<applet code="deney1" width=300 height=100>
</applet>
*/
public class deney1 extends Applet {
int x=0; // current position
public void paint(Graphics g) {
g.drawString("x="+x, 0,20);
x+=10;
g.drawString("x="+x, 0,40);
x+=1;
}
}
Что здесь происходит?
EDIT: Предполагается, что мой вопрос является возможным дубликатом этого:
how is paint() running without being called in the main method?
Это сообщение говорит мне, что метод краска() будет работать без явного вызова. Но это не объясняет порядок выполнения операторов в paint(), и я не могу отслеживать напечатанные значения x. Почему не 0 и 10? Почему не 11 и 22? Для того, чтобы сделать вещи немного более ясным:
g.drawString("x="+x, 0,20); // 1
x+=10; // 2
g.drawString("x="+x, 0,40); // 3
x+=1; // 4
Похоже, что: 2 и 4 выполнены до 1 (х становится 11). Затем выполняется только 2 до 3 (x становится 21).
вопрос 1: Почему 2 и 4 выполнены до 1?
вопрос 2: учитывая ответ на вопрос 1, почему 4 не выполняется также во второй раз до 3?
'awt' устарел с' swing'. 'swing' устарел с' JavaFX'. Это не будет отвечать на ваш вопрос, но это хороший совет: никогда не называйте его и не используйте 'JavaFX'. –
Возможный дубликат [как работает paint() без вызова в основном методе?] (Http://stackoverflow.com/questions/7764602/how-is-paint-running-without-being-called-in-the -main-method) –
Ваш код в порядке, проблема должна быть в другом месте. Возможно, в основном методе. – WonderWorld