JFrame aus Applet starten

munuel

Mitglied
Hallo ich habe folgendes Problem:
Ich möchte ein Applet schreiben, welches ein JFrame Klasse (Visual) aufruft,
welche ein Bild lädt.
Das Applet wird aus dem Browser ausgeführt (Kaffeetasse) aber ich erhalte mein Fenster
mit dem Bild nicht!
Wenn ich das Applet in meiner IDE (eclipse) starte funktioniert es.
Was mach ich falsch :(
Gruss munule

Die Html Seite die, bei meinen Klassen liegt
<html>
<body>
<applet code=Applet.class width="200" height="200" >
</applet>
</body>
</html>

//Applet Klasse:
import javax.swing.*;

public class Applet extends JApplet {
private Visual _Visuell;
private Klang _Klang;

public void init() {

_Visuell = new Visual("Visualisierung");
_Visuell.setResizable(false);
_Visuell.setSize(550,400);
_Visuell.setLocation(450,100);
_Visuell.setVisible(true);

}
}

//JFrame Klasse die aus Applet aufgerufen wird und ein Bild laden soll:
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.*;

public class Visual extends JFrame {

public Visual (String title){
super(title);
BufferedImage biBild = null;
Container frameContent;
JLabel jlBackground;
System.out.println("Konstruktor aufgerufen");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try {
biBild = ImageIO.read(new File("Bild.jpg")); // liegt auch bei meinen Klassen

} catch (IOException e) {
e.printStackTrace();
//System.out.println("geht net");
}

jlBackground = new JLabel(new ImageIcon(biBild));

// Frame Content initialisieren
frameContent = this.getContentPane();
frameContent.add(jlBackground);
}

}
 
Ich weiß nicht ob es daran liegt, aber man kann normal keine anderen Programme von einem applet aus starten, nur mit etwas größerem aufwand. Dann würde es trotzdem nur auf deinem Rechner gehen. Ich glaube das liegt bei dir auch daran, bin mir aber nicht ganz sicher.
 
hallo
Ich möchte ja auch nicht das ein anderes Programm von meinem Applet aus gestartet wird, sondern
nur das ich von dem Applet ein JFrame starten kann was mir dann auch über den Browser angezeigt wird:)
gruss munuel
 
Natürlich kann man per Applet (J)Frames anzeigen. Hast's schon in verschiedenen Browsern ausprobiert?

Hm, vielleicht tritt eine Exception auf, die du nicht mitkriegst - zum Beispiel beim Laden des Bilds?
 
@ matdacat
hast du schon mal ein JFrame über ein Applet gestartet, wenn ja dann schau dir mal diese Fehlermeldung an. Aus der hervor geht dass der Zugriff verweigert wurde.

Meiner Meinung nach, wenn man ein JFrame starten könnte, könnte man auch programme von der Festplatte ausführen. oder denke ich da was falsch.
Das ist die Fehler-Meldung

Code:
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM)

	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)

	at java.security.AccessController.checkPermission(AccessController.java:401)

	at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)

	at java.lang.SecurityManager.checkExit(SecurityManager.java:762)

	at javax.swing.JFrame.setDefaultCloseOperation(JFrame.java:356)

	at Visual.<init>(Visual.java:19)

	at Applet.init(Applet.java:9)

	at sun.applet.AppletPanel.run(AppletPanel.java:347)

	at java.lang.Thread.run(Thread.java:536)
 
Zuletzt bearbeitet:
Mich stört das Wort 'starten'. :) Hier wird nix gestartet, sondern einfach eine neue Instanz eines (J)Frames erzeugt und diese dann angezeigt. Ja, ich hab sowas schon öfters gemacht, zum Beispiel Java-Spiele, deren Spielfeld vom Applet in einem neuen Frame dargestellt werden.
Als Beispiel für dich hab ich http://www.highscore.de/java/aufbau/swing.html gefunden, da wird (ganz unten) das Öffnen eines Frames aus einem Applet demonstriert. Wie's dann aussieht, siehst du unter http://www.highscore.de/java/aufbau/src/2.5.1/sample.html.

Hm, was die Fehlermeldung betrifft: vielleicht sind deine Browser-Sicherheits-Einstellungen zu restrikt?
 
So, an meinen Browsereinstellungen liegt es nicht, weil das Beispiel funktioniert.
 
ich glaube das
Code:
 biBild = ImageIO.read(new File("Bild.jpg")); // liegt auch bei meinen Klassen
verursacht die securityException mache mich gerade schlau..
 
Zurück