Hi Leute
Ich bin ziemlich neu in der Applet-Programmierung und wollte
mir ein kleines Applet schreiben mit welchem ich die Bilder,
die auf meinem Webspace liegen wie in einer Diashow anzeigen
kann.
Ich dachte mir jedoch zuerst, ich probier mal anfangs nur einfach ein
ganz normales Bild anzuzeigen ohne irgendwelchen Schnick-Schnack.
Und siehe da schon tauchen die ersten Probleme auf.
Das Bild wird einfach nicht angezeigt.
Zuerstmal, Java Applets funktionieren auf meinem Webspace, dass
hab ich schon getestet, indem ich einfach über ein Applet und den
drawString-Befehl einen Text ausgebe.
Das Bild welches ich zeichnen möchte habe ich mit einem MediaTracker
geladen und wollte es dann ganz einfach mit drawImage ausgeben.
Das ganze soll in einem JPanel passieren.
Bei mir auf der Festplatte funktioniert das Applet ganz normal aber auf dem Server nicht.
Grob gehe ich folgendermaßen vor:
- Habe eine Klasse Bildergallerie, welche von JApplet erbt und die auch die nötigen Funktionen implementiert
- Über die init-Methode (von JApplet) erstelle ich ein neues Objekt vom Typ MainPanel (erbt von JPanel).
- MainPanel erstellt den MediaTracker und ein Toolkit mit dem ich das Image reinlade und warte bis es fertig geladen ist.
- Danach wird dann das Bild in der Methode painComponent(Graphics g) mit der Methode g.drawImage(...) angezeigt.
Ach übrigens, ich habe die class-Datei einfach so auf dem Server liegen (also nicht als jar oder so) und starte
sie über eine HTML-Datei.
Danke schonmal im Voraus,
Krondor
Hier noch der Quellcode wer genau sehen will was ich da verzapft habe:
Ich bin ziemlich neu in der Applet-Programmierung und wollte
mir ein kleines Applet schreiben mit welchem ich die Bilder,
die auf meinem Webspace liegen wie in einer Diashow anzeigen
kann.
Ich dachte mir jedoch zuerst, ich probier mal anfangs nur einfach ein
ganz normales Bild anzuzeigen ohne irgendwelchen Schnick-Schnack.
Und siehe da schon tauchen die ersten Probleme auf.
Das Bild wird einfach nicht angezeigt.
Zuerstmal, Java Applets funktionieren auf meinem Webspace, dass
hab ich schon getestet, indem ich einfach über ein Applet und den
drawString-Befehl einen Text ausgebe.
Das Bild welches ich zeichnen möchte habe ich mit einem MediaTracker
geladen und wollte es dann ganz einfach mit drawImage ausgeben.
Das ganze soll in einem JPanel passieren.
Bei mir auf der Festplatte funktioniert das Applet ganz normal aber auf dem Server nicht.
Grob gehe ich folgendermaßen vor:
- Habe eine Klasse Bildergallerie, welche von JApplet erbt und die auch die nötigen Funktionen implementiert
- Über die init-Methode (von JApplet) erstelle ich ein neues Objekt vom Typ MainPanel (erbt von JPanel).
- MainPanel erstellt den MediaTracker und ein Toolkit mit dem ich das Image reinlade und warte bis es fertig geladen ist.
- Danach wird dann das Bild in der Methode painComponent(Graphics g) mit der Methode g.drawImage(...) angezeigt.
Ach übrigens, ich habe die class-Datei einfach so auf dem Server liegen (also nicht als jar oder so) und starte
sie über eine HTML-Datei.
Danke schonmal im Voraus,
Krondor
Hier noch der Quellcode wer genau sehen will was ich da verzapft habe:
Code:
/*
* Quellcode von Bildergallerie.java
*/
package system;
import views.MainPanel;
import javax.swing.JApplet;
public class Bildergallerie extends JApplet{
//Applet-Methoden
public void init(){
//Das MainPanel wird angezeigt
MainPanel mainPanel = new MainPanel();
getContentPane().add(mainPanel);
}
public void start(){
}
public void stop(){
}
public void destroy(){
}
}
Code:
/*
* Quellcode von MainPanel.java
*/
package views;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.MediaTracker;
import java.awt.Image;
import java.awt.BorderLayout;
public class MainPanel extends JPanel{
/*
* Konstanten
*/
final Point windowSize = new Point(800,600);
final Color backgroundColor = Color.WHITE;
/*
* Variablen
*/
Image currentImage;
MediaTracker mt;
Toolkit toolkit;
JTextField txt;
/*
* Konstruktoren
*/
public MainPanel(){
setLayout(new BorderLayout());
txt = new JTextField("");
add(txt,BorderLayout.SOUTH);
toolkit = getToolkit();
mt = new MediaTracker(this);
setBackground(backgroundColor);
setSize((int)windowSize.getX(),(int)windowSize.getY());
repaint();
}
public void loadNewImage(String path){
if(currentImage != null)
mt.removeImage(currentImage);
currentImage = toolkit.getImage(path);
mt.addImage(currentImage,1);
txt.setText("Lade Bild...");
try{
mt.waitForAll();
}
catch(InterruptedException e){System.err.println("Can't wait for images loading");}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
loadNewImage("pics/01.jpg");
txt.setText("Bild pics/01.jpg geladen");
g.drawImage(currentImage,0,0,backgroundColor,this);
setVisible(true);
}
}
Code:
<html>
<head>
<title>Bildergallerie</title>
</head>
<body>
Bildergallerie
<applet code="system.Bildergallerie.class" width=800 height=600>
</applet>
</body>
</html>