Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe ein kleines JApplet welches einfach nur ein Image anzeigen soll. Im Eclipse Debugger läuft alles perfekt. Jetzt habe ich ein Jar erstellt, dieses signiert und auf eine HTML Seite eingebunden. Das Applet wird auch geladen. In der Sun Java Konsole gibt es keine Fehlermeldungen. Die Hintergrundfarbe wird angezeigt, aber ich sehe kein Bild.
Hat jemand eine Idee?
Code:
public void paint(Graphics g){
Container contentPane=getContentPane();
Color c = new Color(200,120,80);
contentPane.setBackground(c);
JLabel jl=new JLabel("");
if (isOK){
Icon iconOK = new ImageIcon(getClass().getResource("/resources/images/ok.png"));
jl.setIcon(iconOK);
}else{
Icon iconNOK = new ImageIcon(getClass().getResource("/resources/images/nok.png"));
jl.setIcon(iconNOK);
}
contentPane.add(jl);
}
habe es mal in die Ini gepackt. Leider kein Erfolg. Die Anzeigefläche bleibt jetzt sogar weiß.
Die Images sind im Jar. Ich habe dieses sogar entpackt und nachgesehen ob die Ordner passen. Hier ist alles OK. Zudem habe ich mal ein System.out.println(true bzw. false) eingebaut. In der Java Console wird mir dann auch true bzw. false ausgegeben. Somit wird der Code ausgeführt. Nur kann ich nichts sehen.
Was mir auch aufgefallen ist. Wenn ich über die Stelle wo das Applet ist ein Fenster aufklappe. Z.B. den Explorer und dann das Fenster schließe wird das Applet nicht neu gezeichnet. Ich sehe dann immernoch reste des Explorere Fensters im Bereich des Applets.
Klar. Lade die Bilder richtig! Bilder werden über die Applet eigene Methode getImage() geladen.
Einfaches Beispiel, wenn sich die Bilder in der gleichen Jar-Datei befinden:
Code:
import javax.swing.*;
import java.awt.*; //wenn du ein Image als Variable anlegen willst
public class PictureApplet extends JApplet {
public void init() {
JLabel label = new JLabel();
label.setIcon(new ImageIcon(getImage(getClass().getResource("bild.jpg"))));
add(label);
}
}
Will das gleich mal testen. Ich packe zusätzlich (später im Code) ein JPanel auf das Applet. Dieses JPanel nutze ich auch in einem "normalen" Java-Programm. Muss ich mir dann selber eine Art ImageLoader basteln der beim normalen Programm so lädt und beim Applet wie in deinem Post?
Kann ich dann im Panel irgendwo abfrage ob dieses auf ein Applet oder einen Frame gesetzt wurde?
Habs eben schnell getestet. Klappt jetzt mit dem Bild perfekt. Leider wird mir nicht die korrekte Hintergrundfarbe angezeigt. Mache ich hier auch noch was falsch?
Code:
import javax.swing.*;
import java.awt.*; //wenn du ein Image als Variable anlegen willst
public class PictureApplet extends JApplet {
public void init() {
setBackground(new Color(255,0,0));
JLabel label = new JLabel();
label.setIcon(new ImageIcon(getImage(getClass().getResource("bild.jpg"))));
add(label);
}
}
Müsste eigentlich rot ergeben. Der Hintergrund ist aber eher leicht grau bis weiß.
Und die Frage aus dem letzten Post bzgl. ImagerLoader ist noch offen.
Wäre nett wenn mir hier jemand den richtigen Weg zeigen könnte.
Warum so umständlich? Wenn du ein Applet lädst, wird immer eine init()-Methode ausgeführt, bei Applikationen wird immer eine main()-Methode ausgeführt. Damit kannst du wunderbar den Typ unterscheiden und die entsprechende Methode in einer Klasse aufrufen.
Das Panel braucht also nicht wissen, ob es in ein Applet oder in eine Applikation geladen wurde.