Помогите отобразить изображение в Java-апплете - PullRequest
0 голосов
/ 09 сентября 2011

Ниже приведен простой апплет, который я пишу для отображения одной картинки. Код компилируется нормально, и апплет загружается, но файл изображения никогда не отображается в апплете. Я думаю, что он не может найти изображение, используя this.getImage (appletBaseURL, имя файла); У меня есть файл изображения, хранящийся во всех папках, связанных с этим пакетом, но он все еще не рисует его.

    import java.applet.Applet;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;


   public class imageTest extends Applet {

    private Image spaceShip;    
    private final String filename = "spaceshipcropped.jpg";        
    public void init() {

        java.net.URL appletBaseURL = getCodeBase();
        File file = new File("spaceshipcropped.jpg");
        try {
            spaceShip = ImageIO.read(file);
        } catch (IOException ex) {
            Logger.getLogger(imageTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D)g;    
        g2d.drawImage(spaceShip, 0,0, null);
    }

    public void update(Graphics g) {
       repaint();
    }
}

После того, как я внес изменения в тезисы, все заработало. большое спасибо всем за помощь!

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011
  1. Не вызывайте setSize() в апплете.Размер задается HTML.
  2. Не используйте AWT в этом тысячелетии.
  3. Объект, передаваемый компоненту Swing, должен быть Graphics2D объектом, но я никогда не слышал то же самое о Applet.Вы проверяете консоль Java?
  4. Этот код имеет несколько избыточных импортов.
  5. В методе paint проверьте, является ли изображение null.
  6. JavaDocs для состояния метода getImage(URL,String) "Этот метод всегда возвращает немедленно, независимо от того, существует ли изображение." Либо добавьте MediaTracker, либо присоединитесь к нам в 3-м тысячелетии ииспользуйте ImageIO.read(URL) - который блокирует, пока изображение не будет загружено.

Я ожидаю, что точка исправления 6 решит проблему, но уделим внимание и другим 5 пунктам.

0 голосов
/ 09 сентября 2011

добавить

public void update(Graphcs g) {
    repaint();
}
...