JFrame in JApplet einbinden

Skady

Grünschnabel
Hallo,
nachdem ich nun mein Programm als JFrame fertig gestellt habe würde ich dies nun gerne in ein Applet / JApplet einbinden.

Code:
import java.awt.*;
import javax.swing.*;


public class Futest extends JApplet
{
    public Futest()
    {
        getContentPane().add(new Darstellung());
    }
}

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.applet.*;
import java.net.URL;

/**
 ----------
 */
public class Darstellung extends JFrame implements ActionListener
{
    // Variablen
    ......
    
    
    
    // Konstruktor
    public Darstellung()
    {
        // Titel
        setTitle(titel);
        
        // Beendet die Anwendung mit System.exit(0)
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // Größe
        setSize(GroeßeX,GroeßeY);
        
        // Position
        //setLocation(PositionX,PositionY);
        
        // Zentriere
        setLocationRelativeTo(null);
        
        // Setzte die MenuBar
        createMenuBar();
        
        // Immer im Vordergrund
        setAlwaysOnTop(startAlwaysOnTop);
        
        // Initialisierung der Uhr
        uhr = new Uhr();
        if(!starte24StdFormat) uhr.wechselZeitFormat();
        
        // Initialisiere die Darstellung
        grafik = new Grafik(uhr, startDigital);
        
        // Füge die Grafik zum Content Pane hinzu
        getContentPane().add(grafik);
        
        // Sichtbarkeit
        setVisible(true);
        
        // Initialisierung des Timers
        timer = new Timer(1000, this);
        timer.start();
        
        try
        {
            clip = Applet.newAudioClip(new URL("file:///C:\\sound.wav"));
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
......
}

Nach dem ausführen bekomme ich nun folgende Meldung:
Ausnahme: access denied (java.lang.RuntimePermission exitVM.0)


Ich hoffe jemand man von euch kann mir weiterhelfen und sagen was daran falsch ist bzw. sagen wie man so etwas richtig macht.

Vielen dank schonmal für eure Hilfe.

Viele Grüße

Skady


P.S. Mein erster Gedanke war der nicht erlaubte Dateizugriff auf C:, leider ist dieser nicht das Problem.
 
Moin,

erst einmal würde ich ganz einfach behaupten, dass das was Du da versuchst - nämlich einen JFrame einem Container zuzufügen - absolut nicht funktioniert.
Hab das gestern (aus Versehen) auch gemacht und da gab es ne dicke Exception.
In Deinem Fall verkörpert das Applet ja bereits einen "Frame", im Sinne des anzuzeigenden Grundgerüsts auf der Webseite.

Deine Exception selbst scheint sich aber auf etwas anderes zu beziehen.
Zeilenangabe bzw. den passenden Codeteil für die Exception wäre mal interessant zu sehen.

Gruß,
Xan
 
Aufgrund deiner Antwort habe ich versucht das Applet anders zu starten.

Folgendes kam dabei rum:
Code:
java.lang.IllegalArgumentException: adding a window to a container
	at java.awt.Container.addImpl(Container.java:1022)
	at java.awt.Container.add(Container.java:352)
	at Futest.<init>(Futest.java:10)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at bluej.runtime.ExecServer$3.run(ExecServer.java:874)

Zeile 10 ist wie bereits erwartet:
Code:
getContentPane().add(new Darstellung());


Ich muss zugeben, dass ich noch mit bluej arbeite. Die obige Meldung entstand diesmal durch direkten Aufruf von newfutest(). Vorher hatte ich immer "Run Applet" ausgewählt.

Ich nehme an das der nächste Schritt, Richtung lauffähiges Applet, eine Änderung der Klasse Darstellung auf JPanel ist oder?
 
Moin,

Du brauchst einfach nur die Applet-Klasse wie eine Frame-Klasse zu behandeln - natürlich mit minimierter Funktionalität (siehe API).
Es ist sozusagen Dein MainFrame, auf dem sich alles abspielt.
Wolltest Du eben noch alle möglichen Dinge per JFrame realisieren, brauchst Du dies nur auf die Applet-Klasse anwenden.
Somit fällt der JFrame komplett raus - es sei denn Du willst ein Applet, welches einen JFrame aufruft.

Die ganzen Komponenten auf ein JPanel zu packen, um dieses dann dem Applet hinzuzufügen, ist wohl eine annehmbare Lösung.

Gruß,
Xan
 
Na gut dann warte ich lieber erstmal ab ob sich der Dozent auch damit zufrieden gibt, ansonsten wird das noch fix geändert.

Danke jedenfalls für die schnelle Hilfe.
 

Neue Beiträge

Zurück