2015-08-03 3 views
0

Я хочу нарисовать строку, используя метод init, но если вы используете метод start, то его работа прекрасна. Пожалуйста, объясните мнеПочему мы не можем нарисовать строку с использованием графического объекта в этом примере

public class Canv extends Applet //applet class 
    { 
     public void start() 
     { 

     } 
     public void init() 
     {          
      System.out.println("hi"); 
      Canvas c=new Canvas();    // want to print String in canvas 

      c.setSize(500,500); 
      c.setBackground(Color.red); 
      add(c); 
      Graphics g=c.getGraphics(); 
      g.drawString("hello buddy",60,60); 
     } 
     public void paint(Graphics g) 
     { 

     } 
     public void stop() 
     { 
      System.out.println("stop"); 
     } 
    } 
+0

Можете ли вы вставить код, который работает? – darijan

+0

просто скопируйте код инициализации папок в метод запуска, а затем его работу –

+0

1) Зачем нужен апплет? Если это связано с тем, что учитель указал на это, обратитесь к [Почему учителя CS должны ** останавливаться ** преподавать Java-апплеты] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-учебно-ява-апплеты /). 2) Зачем использовать AWT? См. [Этот ответ] (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978) по многим причинам, чтобы отказаться от использования AWT с использованием компонентов в пользу Swing. –

ответ

1

Если внимательно прочитать API, предоставленную Java, то вы увидите на init:

* Called by the browser or applet viewer to inform 
* this applet that it has been loaded into the system. It is always 
* called before the first time that the <code>start</code> method is 
* called. 
* <p> 
* A subclass of <code>Applet</code> should override this method if 
* it has initialization to perform. For example, an applet with 
* threads would use the <code>init</code> method to create the 
* threads and the <code>destroy</code> method to kill them. 

И для start:

* Called by the browser or applet viewer to inform 
* this applet that it should start its execution. It is called after 
* the <code>init</code> method and each time the applet is revisited 
* in a Web page. 

Очевидно, что код который использует этот интерфейс для манипулирования Java-апплетами, не показывает холст, написанный в методе init(), В этом случае пользовательский интерфейс не готов. Это всего лишь маркер для вас, что контейнер начал инициализировать ваше приложение.

+0

спасибо большое, теперь я получил ответ .... –

+0

, но в этом случае напечатан мой холст и g.drawString («hello buddy», 60,60); здесь не печатается –