2013-03-29 205 views
-1

這是怎麼不打印顯示Applet上的任何東西?我試過多次編輯過,沒有任何東西顯示。有誰知道發生了什麼?我試圖畫,但它不工作。任何提示將非常感謝!Applet沒有顯示任何東西

import java.awt.*; 
import java.applet.Applet; 
import javax.swing.*; 
import java.awt.event.*; 
import java.util.Arrays; 
import java.util.StringTokenizer; 
import java.awt.Color; 

public class StartingPoint extends Applet{ 
    private final int pictureWidth = 1001; 
    private final int pictureHeight = 50; 
    private static FormCanvas picture; 
    private JPanel panel; 
    private JTextField numLights; 
    private JTextField whichLight; 
    private JTextField howLong; 



    public void lightCreator(){ 
     panel = new JPanel(); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
     picture = new FormCanvas(); 
     panel.add(picture); 
     panel.setBackground(Color.BLUE); 
     numLights = new JTextField("Enter Number of lights total", 20); 
     whichLight = new JTextField("Enter which lights you want off separated by commas", 30); 
     howLong = new JTextField("Interval time", 10); 
     panel.add(numLights); 
     panel.add(whichLight); 
     panel.add(howLong); 
     int light = Integer.parseInt(numLights.getText()); 
     String lights = whichLight.getText(); 
     int lightsOn[] = new int[light]; 
     StringTokenizer str = new StringTokenizer(lights, ","); 
     int n = 0; 
     while(str.hasMoreElements()){ 
      lightsOn[n] = Integer.parseInt((String)str.nextElement()); 
      n++; 
     } 
     add(panel); 
    } 

    class FormCanvas extends Canvas { 
     // this class paints the GUI 

     FormCanvas() { 
      setSize(pictureWidth, pictureHeight); 
      setBackground(Color.blue); 
     } 
    } 
} 

回答

2

問題:

  • 爲什麼要擴展小程序,而不是JApplet的?
  • 爲什麼要混合使用Swing和AWT組件(包括Canvas)?
  • lightCreator()方法的調用方式是什麼?
  • 如果這是一個Applet/JApplet,您的init()方法重寫在哪裏?

在嘗試創建和顯示小應用程序之前,您是否瀏覽過小應用程序教程?如果不是,那是我開始的第一個地方。

2

變化:

public void lightCreator(){ 

要:

@Override 
public void init() { 

如何走到這一步不打印顯示在Applet的東西嗎? ..有人知道發生了什麼事嗎?

正如@哈弗的第三& 4日的評論暗示,該lightCreator方法永遠不會在代碼中調用。使用小程序生命週期方法init(),它將在小程序第一次加載時被稱爲單次。

+0

..這種改變會讓代碼顯示下一個問題。它有各種各樣的.. –