JFrame in JApplet einbinden

MArCus88

Mitglied
Hallo zusammen,

da ich gerade frisch gebackener java-forum-Member bin, erstmal ein herzliches Hallo an alle :)

Ich bin Student der Informatik im dritten Semester, habe also schon ein wenig Ahnung in einigen Programmiersprachen. Dieses Semester haben wir Java dazubekommen und müssen in diesem Fach regelmäßig Hausaufgaben einreichen. Unsere erste Aufgabe besteht darin eine Anwendung mit simpler GUI zu erstellen, bei der wir einfache Sätze mit Subjekt, Prädikat und Objekt einlesen und dann mit einem Button aus den Eingabesätzen Zufallssätze generieren sollen.

Das ganze hab ich bisher auch zufriedenstellend umgesetzt, bis auf ein paar Ausnahmen, die ich noch abfragen muss, aber soweit reicht mein Wissensschatz noch. Mein Problem ist nun, dass ich den Code innerhalb einer eigenen Klasse aufgesetzt habe, die von JFrame erbt. Dummerweise sollen wir die Aufgabe als JApplet umsetzen um die Applikation so browsertauglich zu bekommen und ich weiß nicht wie ich das anstellen soll. Von der letzten Vorlesung ist noch hängen geblieben, dass JApplets ähnlich funktionieren wie JFrames und ich dieselben GUI-Elemente aus SWING nutzen kann. Daraus nutze ich nämlich den JButton, das JTextField und das JLabel.

Am besten ich poste einmal den bisherigen Code:

Java:
import java.awt.*;
import javax.swing.*;
import java.util.*;

public class MyFrame extends JFrame {

	// Felder
	private JLabel commandPrompt;
	private JTextField inputTextField;
	private JButton createRandomSentenceButton;
	private JLabel outputLabel;
	private ArrayList<String> subjects;
	private ArrayList<String> descriptors;
	private ArrayList<String> objects;
	private String inputString;
	private String outputString;
	private String[] inputComponents;
	private MyActionListener myActionListener;
		
	// Konstruktor
	public MyFrame(){
		
		// Basisklasse initialisieren
		super("Phrasendrescher");
		
		// Eingabeaufforderungs-Label initialisieren
		commandPrompt = new JLabel("Bitte geben Sie einen einfachen Satz mit Subjekt, Praedikat und Objekt ein:");
		
		// Eingabestring mit Leerstring initialisieren
		inputString = new String("");
		
		// Ausgabestring mit Leerstring initialisieren
		outputString = new String("");
		
		// MyActionListener-Instanz hinzufügen um auf Eingaben ...
		// ... reagieren zu können
		myActionListener = new MyActionListener(this);
		
		// Speicherplatz für die Arrays reservieren
		subjects = new ArrayList<String>();
		descriptors = new ArrayList<String>();
		objects = new ArrayList<String>();
		
		// Speicherplatz für das Satzkomponentenarray reservieren
		inputComponents = new String[4];
		
		// Eingabetextfeld initialisieren ...
		// ...und ActionListener zuweisen
		inputTextField = new JTextField("",20);
		inputTextField.setActionCommand("inputTextField");
		inputTextField.addActionListener(myActionListener);
		
		// Ausgabelabel initialisieren
		outputLabel = new JLabel("<Hier wird ein Zufallssatz stehen>");

		// Button initialisieren, ActionCommand setzen & ActionListener zuteilen
		createRandomSentenceButton = new JButton("Einen Zufallssatz erstellen");
		createRandomSentenceButton.setActionCommand("createRandomSentenceButton");
		createRandomSentenceButton.addActionListener(myActionListener);
		
		// UI-Elemente ins GUI setzen
		add(commandPrompt,BorderLayout.NORTH);
		add(inputTextField,BorderLayout.CENTER);
		add(outputLabel,BorderLayout.SOUTH);
		add(createRandomSentenceButton,BorderLayout.EAST);
	}
	
	// damit erhält das Frame vom ActionListener den eingegebenen Satz
	public void getInputString() {
		this.inputString = inputTextField.getText();
		
		// Eingabesatz in einzelne Woerter zerlegen...
		// ...und in einem Stringarray speichern ...
		// ... dabei das Leerzeichen als Zerlegungskriterium verwenden
		inputComponents = inputString.split(" ");
		
		// Artikel und Subjekt in eine separate Liste speichern...
		// ...und beide Woerter durch ein Leerzeichen trennen
		String tmp = inputComponents[0] + " " + inputComponents[1];
		subjects.add(tmp);
		
		// Praedikat in eine separate Liste speichern
		descriptors.add(inputComponents[2]);
		
		// Objekt in eine separate Liste speichern
		objects.add(inputComponents[3]);
	}
	
	// damit wird durch den ActionListener der Ausgabesatz gesetzt
	public void setOutputString() {
		
		// Zufallssatz erstellen
		this.outputString = this.subjects.get((int)((Math.random()*subjects.size())+0)) + " " 
							+ this.descriptors.get((int)((Math.random()*descriptors.size())+0)) + " "
							+ this.objects.get((int)((Math.random()*objects.size())+0));
		
		// ermittelten Ausdruck auf dem Ausgabelabel setzen
		this.outputLabel.setText(this.outputString);
	}
	
	// Programm
	public static void main(String[] args) {
		JFrame exampleFrame = new MyFrame();
		exampleFrame.pack();
		exampleFrame.setVisible(true);
	}
}

Dazu hab ich auch noch eine eigene ActionListenerklasse geschrieben, die aber an dieser Stelle nicht unbedingt erforderlich ist, denke ich. Bisher hab ich gegoogelt, die SuFu hier benutzt und die Java API durchforstet. Fündig bin ich zwar geworden, hab aber nichts gefunden, was konkret mein Problem löst bzw. was mir hinreichend alles erklärt, wie gesagt bin ich Neuling in Java.

Ich wäre euch unendlich dankbar, wenn ihr mir ein paar Hinweise geben könntet, wie ich die Aufgabe bewältige. Wie gesagt möchte ich meine Klasse so umschreiben, dass sie als JApplet im Browser läuft. Danke schonmal im Vorraus! ;)
 

Kaffeebohn

Bekanntes Mitglied
Wenn du dein JFrame als Applet haben willst, dann erbst du zunächst nicht mehr von JFrame sondern von JApplet. Die main-Methode fliegt raus und weicht einer methode

public void init() {

}

das .pack() musst du rausschmeißen, das gibts nicht beim Applet, genauso wie der Aufruf von super() im Konstruktor.

Probiers mal damit, wenn weitere Fragen sind meld dich gerne.

Grüße
 

MArCus88

Mitglied
@Kaffeebohn:

Super, hab vielen Dank für die superschnelle Antwort :) Deine Anmerkungen hab ich im Code umgesetzt und das Ganze funktioniert einwandfrei! Jetzt soll das Applet noch browsertauglich gemacht werden, kannst du mir dabei auch helfen? Ich bin mir sicher dass dafür nur ein klein wenig HTML-Code nötig ist, wenn ich mich richtig an den Inhalt der letzten Vorlesung erinnere. Muss dieser dann in eine separate Textdatei und wie müsste der Code aussehen?

Danke für die Hilfe auch wieder vorab! :)

Edit: Ach ja das hab ich vergessen. Der Compiler gibt mir im Log nach den Änderungen eine Warnung aus, die jedoch nicht zum Absturz des Programms führt:

"Warnung: AppletViewer-Eigenschaftendatei kann nicht gelesen werden: /Users/localhost/.hotjava/properties Standardwerte werden verwendet."

P.S.: Ich arbeite auf einem Mac und nutze dabei Eclipse.
 
Zuletzt bearbeitet:

Kaffeebohn

Bekanntes Mitglied
Meinst du mit Browser-Tauglich dass du einen Quellcode suchst, mit dem du das Applet in eine HTML-Seite einbindest?


HTML:
  <applet code="MyFrame.class" width="400" height="400" alt="Mein Applet"></applet>

probiers mal damit. Das geht, wenn du kein JAR-File draus gemacht hast.
 

MArCus88

Mitglied
Ja genau das meine ich damit :) Sorry aber mit HTML hab ich bisher überhaupt nichts gemacht und bin da mehr als unversiert. Daher auch meine nächste Frage: muss ich den Code in die Klasse schreiben oder in eine externe Datei? Tut mir leid für die Anfängerfrage :lol:
 

eRaaaa

Top Contributor
:autsch:² Waaahh? Na eine eigene Datei (html Datei eben)! Das ist ja schließlich die, die du mit dem Browser dann aufrufst.
 

Kaffeebohn

Bekanntes Mitglied
Das kopierst du in eine neue Datei, die benennst du in irgendwas.HTML oder irgendwas.HTM, und kopierst sie in den gleichen Ordner, in den auch deine .class-Datei liegt. Die HTML-Datei kannst du dann mit deinem Browser öffnen.
 

MArCus88

Mitglied
Okay dann hab ichs ja richtig gemacht, nur schluckts mein Browser irgendwie nicht :noe:

Ich hab folgenden Code:

HTML:
<html>
<head>
<title>Phrasendrescher</title>
</head>
<body>

<p>
<applet code="MyFrame.class" width="400" height="400" alt="Mein Applet"></applet>
</p>

</body>
</html>

in eine *.html - Datei geschrieben und bekomme im Webbrowser nur den Quelltext angezeigt. Oh jee eine schwere Geburt mit mir heute >.<

P.S.: Die Datei liegt auch im korrekten Ordner.
 

eRaaaa

Top Contributor
Und du bist sicher dass die Dateiendung html ist und nicht txt oder so?
index.html.txt ? Ist die Dateiendung evtl. ausgeblendet?....
 

Kaffeebohn

Bekanntes Mitglied
Hast du Java installiert und unterstützt dein Browser Java? ;-)

wenn er dir lesbaren Quellcode anzeigt, könnte das ein Zeichen dafür sein, dass er nicht die class-Datei anzeigt sondern deinen vorherigen Quellcode. Was für Quellcode zeigt er dir denn im Browser an?
 

MArCus88

Mitglied
Jaja ist schon richtig so, ich habs korrekt (via TextEdit <- Standardtexteditor unter Mac OS X) als .html-Datei gespeichert. Die Dateiendung hab ich natürlich nicht manuell eingetippt^^ Getestet hab ichs im Standardbrowser "Safari" unter Mac OS X und ebenfalls über Firefox :noe:

Edit: Er zeigt mir genau den Quelltext an den ich in die Datei geschrieben habe (siehe ein paar Posts weiter oben von mir)

Edit 2: Ich hab auch nochmal in meinen Browsereinstellungen von Safari geschaut und Java wird zugelassen, drum hab ich keine Idee woran es sonst liegen könnte :noe:
 
Zuletzt bearbeitet:

Kaffeebohn

Bekanntes Mitglied
Naja wenn er dir den HTML-Code anzeigt aber nicht interpretiert dann kann das jede Menge Ursachen haben aber an Java liegts in dem Fall vermutlich nicht ;-)

Vielleicht lädst du dir mal nen Firefox oder nen anderen Browser runter und versuchst es mal damit. Ansonsten kann ich dir in dem Fall leider auch nicht weiterhelfen.

Liebe Grüße
 

MArCus88

Mitglied
Ach ihr zwei, ich habs doch echt versaubeutelt :oops: Ich hab die .html-Datei zwar als html gespeichert, aber sie wurde schlicht nicht als .html interpretiert. Drum hab ich sie nochmal als .txt - Datei gespeichert und dann einfach manuell aus txt html gemacht und schwupps funktionierte das ganze :)

Die Früchte meiner Arbeit lade ich direkt mal mit hoch, viel Spaß beim testen^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S [JAVA] JFrame in Applet/JApplet AWT, Swing, JavaFX & SWT 14
G JFrame in JApplet AWT, Swing, JavaFX & SWT 6
R Im JFrame ein JApplet zum öffnen einer Url benutzen AWT, Swing, JavaFX & SWT 22
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
Paty JFrame anfänger bräuchte hilfestellung AWT, Swing, JavaFX & SWT 7
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
Mausposition relativ zu JFrame bekommen AWT, Swing, JavaFX & SWT 6
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
N CPU Belastung bei offenem JFrame auf fast 100% AWT, Swing, JavaFX & SWT 15
N Knopf ganz oben (JFrame) AWT, Swing, JavaFX & SWT 9
N JFrame löscht alles, wenn groß gemacht AWT, Swing, JavaFX & SWT 9
N jFrame löscht am Ende des Threads alles AWT, Swing, JavaFX & SWT 2
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
E JFrame resizing AWT, Swing, JavaFX & SWT 2
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Swing Design des oberen Balkens in JFrame AWT, Swing, JavaFX & SWT 2
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
R Swing Ein gezeichneten String aus dem JFrame löschen AWT, Swing, JavaFX & SWT 5
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
J BackgroundJPanel passt sich dem JFrame nicht an AWT, Swing, JavaFX & SWT 7
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
K JFrame bei JUnit Tests AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
Ghostman1711 JFrame closing AWT, Swing, JavaFX & SWT 3
R Engineklasse mit JFrame AWT, Swing, JavaFX & SWT 4
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
ms_cikar Jframe zurück zu frame1 AWT, Swing, JavaFX & SWT 14
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
R JFrame schließen AWT, Swing, JavaFX & SWT 9
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 16
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
P JFrame schrumpft bei Doppelklick auf die Titelleiste AWT, Swing, JavaFX & SWT 0
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
D JFrame mindestgröße erzwingen AWT, Swing, JavaFX & SWT 2
H Swing JFrame mit JFXPanel NPE bei dispose() AWT, Swing, JavaFX & SWT 6
C Swing Borderlayout im JFrame AWT, Swing, JavaFX & SWT 4
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
G Swing JFrame öffnen bei Pidgin Benachrichtigung AWT, Swing, JavaFX & SWT 5
OlafHD JLabel im JFrame Zentrieren AWT, Swing, JavaFX & SWT 2
S Kein JFrame unter Mac? AWT, Swing, JavaFX & SWT 8
G Resize JFrame AWT, Swing, JavaFX & SWT 8
J Teiltransparenter JFrame mit Blur-Effekt AWT, Swing, JavaFX & SWT 2
K Bild in JFrame AWT, Swing, JavaFX & SWT 2
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
I Neues JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
S JFrame -> setVisible AWT, Swing, JavaFX & SWT 3
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
I Swing JMenuBar auch unten am JFrame? AWT, Swing, JavaFX & SWT 2
K SplashScreen neben JFrame behalten AWT, Swing, JavaFX & SWT 10
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
B Swing Unterteiltes JFrame mit Bild in der Mitte AWT, Swing, JavaFX & SWT 4
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
T Applet Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 8
V JFrame wird nicht richtig angezeigt! AWT, Swing, JavaFX & SWT 2
I JFrame neu zeichnen, nicht überzeichnen! AWT, Swing, JavaFX & SWT 2
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben