Applet mit HTML-Button starten und im/als JFrame anzeigen

Status
Nicht offen für weitere Antworten.

FinalbrainXP

Aktives Mitglied
Hi erstmal an alle :wink:

Habe ein kleines Problem mit Applets.

Grundproblem:

Möchte eine Swing-Fensteranwendung erstellen, welche als Applet läuft.
Das Applet soll durch einen HTML-Button gestartet werden und dann direkt das erste Swingfenster
erscheinen. Die aktuelle HTML-Seite darf nicht gewechselt werden.

Habe erstmal folgendermaaßen angefangen:


Einfaches JFrame Fenster

Code:
import javax.swing.JFrame;

class MainWindow extends JFrame
{
	public MainWindow(String title)
	{
		super(title);
		setExtendedState(JFrame.MAXIMIZED_BOTH);
		this.setVisible(true);	
	}
}

Applet Code

Code:
import javax.swing.*;

public class MVIECalculator extends JApplet
{
	MainWindow HauptFenster;

	public void init()
	{
		try
		{
        	javax.swing.SwingUtilities.invokeAndWait(new Runnable()
        	{
            	public void run()
            	{
                	createAndShowGUI();	
            	}
        	});
    	}
    	catch (Exception e)
    	{
        	System.err.println("createGUI didn't successfully complete");
    	}
	}
		
	private void createAndShowGUI()  
  	{
		try
        {
        	UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
		}
		catch(Exception e)
		{
			System.err.println("setLookAndFeel didn't successfully complete");	
		}
		
    	HauptFenster = new MainWindow("Hauptfenster");
      	this.setContentPane(HauptFenster);
    }
}

Hier die HTML-Seite


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<Head>
<Title>Calculator Applet</Title>
<script type="text/javascript">

function showApp()
{
document.open();
document.write ('<APPLET code = "MVIECalculator.class" width = "500" height = "300"> </APPLET>');
document.close();
}

</script>
</Head>
<Body>
<input type="button" value="Calculator starten" onClick="showApp()"/>
</Body>
</HTML>


Das ganze funktioniert auch so ungefähr so, wie ich es mir vorgestellt habe, nur gibt es da 2 Probleme:

1. Problem

Ich arbeite mit dem JCreator 3.5 und dem jdk 1.5.0.3 und wenn ich den Code im Jcreator
mit der Applet-Ansicht zum Test laufen lasse, dann erscheint Problemlos das Jframe, aber in der
Console erhalte ich zusätzlich die Exception: "createGUI didn't successfully complete "

Funktionieren Tut es wunderbar. Liegt der Fehler an der verbuggten Jcreator 3.5 Version oder an meinem Code ?
Welcher Fehler könnte es sein ? Wenn ich kein JFrame aufrufe, sondern nur nen JLabel zum Beispiel
direkt aufs Applet zeichne, dann erscheint der Fehler nicht. Irgendwie will der Thread nicht, wenn ich nen JFrame benutze. Oder sollte man ein JFrame direkt mit Applet-Informationen beerben ?

2. Problem

Wenn ich den HTML-Button betätige, dann erscheint das Hauptfenster-JFrame direkt, genauso wie ich
es möchte, nur wird dabei die HTML-Seite gewechselt. Weiss jemand da eine andere Lösung ?
Will einfach sowas quasi wie nen Applet-Popup haben, wo direkt das HauptJframe angezeigt wird.
Das Applet sollte nicht direkt in der HTML-Seite eingebettet sein, sondern mit einem Schalter gestartet werden können.
Wenn das überhaupt möglich ist.


Wäre super wenn Ihr da ein paar Lösungsmöglichkeiten wisst. Vielleicht habe ich auch generell mit meiner Grundstruktur falsch begonnen und sollte anders Veerben/ableiten/implementieren ?
Könnt ihr mir vielleicht nen bisschen Beispielcode geben , wo einfach nen einfaches JFrame-Fenster
als Applet läuft, welches extern über einen HTML-Button gestartet wird.



Vielen Dank
Gruss von der Programmerfront

Finalbrain :)
 
R

Roar

Gast
zu 1: dann lass dir die exception doch mal ausgeben :autsch: !?!?
2: versteh nicht was du meinst. wenn man das applet nicht sehen soll sag halt breite/höhe = 0

schonmal über webstart nachgedacht?
 

L-ectron-X

Gesperrter Benutzer
Guck mal, so funktionierts, ganz ohne JavaScript.
Deine Fenster-Klasse kannst du so übernehmen, aber...

Die Applet-Klasse:
Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MVIECalculator extends JApplet {
   private JButton btn;

   public void init()
   {
      setLayout(new FlowLayout());
      btn = new JButton("Calculator starten");
      getContentPane().add(btn);
      btn.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            new MainWindow("MVIECalculator").setVisible(true);
         }
      });
   }
}

Die HTML-Seite:
Code:
<html>
<head>
 <title>MVIECalculator-Applet</title>
 </head>
  <body>
   <applet code="MVIECalculator.class" width="180" height="35">
  </applet>
 </body>
</html>
 

FinalbrainXP

Aktives Mitglied
Vielen Dank für eure schnellen Antworten. :)

@roar
Ja stimmt, ich schaue mal nach der Exception :idea:

@l-ectron
Deine Lösung funktioniert supi..nur dass Problem ist, dass
ich das Applet einer Webdesig-Firma zur Verfügung stellen muss, aber nicht weiss
wie Sie es einbinden möchten. Wenn nun der JButton nicht zum Style der Seite passt, besteht mein Problem weiterhin :(
Ich dachte es wäre besser, einfach nen Javascriptaufruf zu ergattern, mit dem die Firma dann das Applet
aufrufen und einbinden könnte wie sie es gerne wollten. Ich habe auch keine Größenvorgaben, also will ich sozusagen nen Popupfenster nehmen. In deiner Lösung wird das Fenster ohne seperaten Thread erstellt, aber im Netz
wird immer gesagt, dass es besser ist nen eigenen Thread dafür zu machen. Oder ist das Humbug ?
Mit meiner Invoke-Methode kommt jedenfalls noch die blöde Exception.

Danke und Gruss

Finalbrain
 

L-ectron-X

Gesperrter Benutzer
OK, dann versuchen wir mal was anderes. Vielleicht kann ich dich damit begeistern... :wink:
Ein funktionierendes Beispiel findest du hier. :arrow: Quelltext downloaden

Wenn du auf die Grafik klickst wird einfach nur ein Fenster geöffnet. Die Grafik kann dabei dem Layout der Webseite angepasst werden.

Für dein Beispiel würde das so aussehen:
Das HTML-File:
HTML:
<html>
 <head>
  <title>GraphicButton-Applet</title>
 </head>
 <body>
  <!-- Die Breite und Höhe des als Parameter eingebundenen Button-Bildes
       sind dem Applet als Werte für Breite und Höhe zu übergeben.-->
  <applet code="GraphicButton.class" width="150" height="20">
  <param name="Button" value="img2.jpg">
  </applet>
 </body>
</html>
Im Prinzip wird hier im param-Tag nur der Dateiname einer beliebigen Grafikdatei übergeben, die in meinem Beispiel im Verzeichnis der Webseite liegt.
Die Breite und Höhe der Grafik ist gleichzeitig die Breite und Höhe des Applets und sollte daher übereinstimmen.
In diesem Beispiel habe ich eine Grafik von 150 x 20 Pixeln verwendet.

Das Applet:
Java:
import java.applet.*;
import java.awt.event.*;
import java.awt.*;

public class GraphicButton extends Applet {
   private Image img;

   public void init() {
      img = getImage(getDocumentBase(), getParameter("Button"));

      this.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {
            new MainWindow("Appletcation").setVisible(true);
         }
      });
   }
   
   public void paint(Graphics g) {
      super.paint(g);
      if(img != null) {
         g.drawImage(img, 0, 0, this);
      }
   }
}
Das Applet implementiert einen MouseListener, das heißt, beim Klick auf die Appletfläche wird eine Aktion ausgeführt. Hier also das Öffnen eines Fensters. Denkbar wäre auch ein Applet mit mehreren gezeichneten Bildern, deren Koordinaten du beim Mausklick vergleichst und entsprechend reagierst.

Heutige Applets werden nicht mehr in AWT sondern in Swing geschrieben.
Das würde dann so aussehen:
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
 
public class GraphicButton extends JApplet {
   private Image img;
 
   public void init() {
      img = getImage(getDocumentBase(), getParameter("Button"));
 
      this.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {
            new MainWindow("Appletcation").setVisible(true);
         }
      });
   }
   
   public void paintComponent(Graphics g) {
      super.paintComponent(g);
      if(img != null) {
         g.drawImage(img, 0, 0, this);
      }
   }
}

Eine mögliche Fenster-Klasse in Swing:
Java:
import javax.swing.*;

class MainWindow extends JFrame {
   public MainWindow(String title) {
      super(title);
      setSize(400, 300);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(DISPOSE_ON_CLOSE);
   }
}

Eine mögliche Fenster-Klasse, wenn es unbedingt in AWT sein muss:
Java:
import java.awt.*; 
import java.awt.event.*;

class MainWindow extends Frame { 
   public MainWindow(String title) { 
      super(title); 
      setSize(400, 300); 
      setLocationRelativeTo(null); 
      addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            dispose();
         }
      }); 
   } 
}
Mit diesem noch ausbaufähigen Beispiel kannst du also deinen "Button" auf jeden Fall an das Design der Webseiten anpassen. Und das ganz ohne JavaScript.
 

FinalbrainXP

Aktives Mitglied
Yehaa danke für deine Mühe :toll:
Wenn jeder so selbstlos Helfen würde wie du, dann käme Deutschland auch mal aus den Socken ;)
Irgendwie höhre ich raus das du irgendwas gegen Java-Script hast....fange es also lieber nicht an zu lernen :D
Sobald ich mich genug (wieder)eingearbeitet habe in das Javazeugs (Bin Alter C'ler -> OOP=böse :D), werde ich mich probieren zu revengieren.


Gruss

Finalbrain
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java3D Applet flackert wenn ein Button(HTML) gedrückt wird Tools - Maven, Gradle, Ant & mehr 11
thE_29 Vom Applet aus einem HTML Button Focus geben Tools - Maven, Gradle, Ant & mehr 4
K Applet als Jar-Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 14
A Applet: Html Datei und Class Datei nicht im selben Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
B Applet (Class-Datei(en)) in Html-Seite einbinden - Clipboard Tools - Maven, Gradle, Ant & mehr 13
S HTML & Applet Tools - Maven, Gradle, Ant & mehr 20
S HttpClient in Applet - html-quellcode laden möglich? Tools - Maven, Gradle, Ant & mehr 3
G Drucken mit Applet html? Tools - Maven, Gradle, Ant & mehr 2
S HTML oder CSS von Applet aus verändern Tools - Maven, Gradle, Ant & mehr 5
B Jukebox mit Java [Html Applet] Tools - Maven, Gradle, Ant & mehr 11
H HTML Seiten in einem Applet anzeigen Tools - Maven, Gradle, Ant & mehr 2
H Applet in HTML-Datei - Classloader Fehlermeldung Tools - Maven, Gradle, Ant & mehr 7
M datei mit html file an applet übergeben Tools - Maven, Gradle, Ant & mehr 3
F Applet erscheint bei Eclipse, aber nicht im HTML-File Tools - Maven, Gradle, Ant & mehr 2
S applet + html Tools - Maven, Gradle, Ant & mehr 7
Z Applet gibt Returnwert nach html zurück ! Tools - Maven, Gradle, Ant & mehr 5
A Java applet in html anzgeigen - ClassNotFoundException Tools - Maven, Gradle, Ant & mehr 10
R Applet Eingabe in Html konvertieren Tools - Maven, Gradle, Ant & mehr 5
0 Applet und html auf Linux-'PC' Tools - Maven, Gradle, Ant & mehr 2
M Applet in HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 9
M Neues HTML Dokument aus Applet öffnen Tools - Maven, Gradle, Ant & mehr 2
Dilandau javascript-applet-html-javascript-applet Tools - Maven, Gradle, Ant & mehr 2
J Applet flackert in Html Tools - Maven, Gradle, Ant & mehr 3
G Applet in die HTML-Datei einbinden Tools - Maven, Gradle, Ant & mehr 3
P Applet in HTML einbinden?? Tools - Maven, Gradle, Ant & mehr 14
B Applet: com.sun.deploy.security.BlockedException :-( Tools - Maven, Gradle, Ant & mehr 0
M Applet Applet legt Browser lahm Tools - Maven, Gradle, Ant & mehr 3
J Applet Aus anderer Browserinstanz Applet abfragen Tools - Maven, Gradle, Ant & mehr 2
P Linux Applet/Webstart Schriftunterschiede Tools - Maven, Gradle, Ant & mehr 3
E JMol -Applet Einbindung Tools - Maven, Gradle, Ant & mehr 0
T Applet Applet und IText wirft Incompatible magic value 1008813135 Fehler Tools - Maven, Gradle, Ant & mehr 6
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
P Applet Applet Signatur auf Server mit SSL-Zertifikat? Tools - Maven, Gradle, Ant & mehr 7
H Applet Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
M Applet Applet funktioniert in Google Chrome nicht Tools - Maven, Gradle, Ant & mehr 2
O Applet "Anwendung kann nicht ausgeführt werden" Tools - Maven, Gradle, Ant & mehr 6
Q Applet Fehlermeldung bei Applet-Wechsel Tools - Maven, Gradle, Ant & mehr 4
T Daten per POST-Methode aus Java-Applet nach php-Script senden Tools - Maven, Gradle, Ant & mehr 3
R Applet friert Adresszeile des Firefox ein Tools - Maven, Gradle, Ant & mehr 2
H Applet-Fehlermeldung Tools - Maven, Gradle, Ant & mehr 10
H Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 3
Q Applet Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 14
J Applet URL mittels TTS als Applet lesen lassen Tools - Maven, Gradle, Ant & mehr 40
F Applet verwischt, wenn Seite gescrollt wird Tools - Maven, Gradle, Ant & mehr 16
S Applet Applet mit C# öffnen: java.lang.SecurityException: Permission denied (WinXP) Tools - Maven, Gradle, Ant & mehr 8
J Applet-Quellcode einsehen Tools - Maven, Gradle, Ant & mehr 6
E Applet Applet und Datenbank Konzept Tools - Maven, Gradle, Ant & mehr 4
S Applet soll Textdatei von fremdem Server öffnen Tools - Maven, Gradle, Ant & mehr 8
E Java Applet bearbeiten Tools - Maven, Gradle, Ant & mehr 8
Quasar Wie signiere ich mein Applet richtig? Tools - Maven, Gradle, Ant & mehr 6
M mit Applet Javascript Aufrufen Tools - Maven, Gradle, Ant & mehr 2
S Applet and stop() method und gui blocked Tools - Maven, Gradle, Ant & mehr 4
A Applet Applet startet nach Einbinden auf Website nicht Tools - Maven, Gradle, Ant & mehr 4
A Applet, xxx.jar und hsqldb Tools - Maven, Gradle, Ant & mehr 4
T Webstart oder Applet Tools - Maven, Gradle, Ant & mehr 2
H Applet applet neu laden im browser Tools - Maven, Gradle, Ant & mehr 10
M Applet neustart Tools - Maven, Gradle, Ant & mehr 5
S Applet request unter Linux Tools - Maven, Gradle, Ant & mehr 14
S Applet GUI nicht im Webbrowser sichtbar Tools - Maven, Gradle, Ant & mehr 5
S Mittel Applet Datei an ein Webserver übertragen Tools - Maven, Gradle, Ant & mehr 2
M Applet in ClientServer J2EE Anwendung debugen Tools - Maven, Gradle, Ant & mehr 6
S Policy mit Signiertem Applet verteilen Tools - Maven, Gradle, Ant & mehr 9
F Applet findet include nicht Tools - Maven, Gradle, Ant & mehr 15
L PHP + Java Applet Kommunikation Tools - Maven, Gradle, Ant & mehr 9
C Probleme mit Applet mit SQL im Browser Tools - Maven, Gradle, Ant & mehr 4
G Java-Applet Probleme beim Browser Tools - Maven, Gradle, Ant & mehr 14
G Textfile in Applet laden möglich? Tools - Maven, Gradle, Ant & mehr 2
A Java-Applet Sandbox deaktiviren? Tools - Maven, Gradle, Ant & mehr 2
B Java-Applet geht nicht (auf dem Webserver) Tools - Maven, Gradle, Ant & mehr 9
P Applet läuft nicht in Browser Tools - Maven, Gradle, Ant & mehr 21
V JAR-Datei eines (J)Applet funktioniert nicht - Help! Tools - Maven, Gradle, Ant & mehr 19
S Java Applet per Klick starten? Tools - Maven, Gradle, Ant & mehr 6
S Applet geht nicht Tools - Maven, Gradle, Ant & mehr 25
J Applet signieren Tools - Maven, Gradle, Ant & mehr 2
H Applet - Geschicklichkeitsspiel programmieren Tools - Maven, Gradle, Ant & mehr 16
U Jar funktioniert nicht als Applet Tools - Maven, Gradle, Ant & mehr 3
C Applet Frage Tools - Maven, Gradle, Ant & mehr 4
M Java Applet - enforce use of older JRE Tools - Maven, Gradle, Ant & mehr 3
N Wie Java-Programm zu Applet machen?! Tools - Maven, Gradle, Ant & mehr 2
W Webseite aus Applet öffnen Tools - Maven, Gradle, Ant & mehr 3
lumo Applet - resize Tools - Maven, Gradle, Ant & mehr 7
Icewind Applet reagiert nach neu laden der Webseite nicht mehr verlässlich auf KeyEvents Tools - Maven, Gradle, Ant & mehr 6
R Applet mit MySQL Tools - Maven, Gradle, Ant & mehr 3
A jar datei trotz zertifikat nich aus applet ausführbar Tools - Maven, Gradle, Ant & mehr 4
F Fehlende Applet Rechte Tools - Maven, Gradle, Ant & mehr 12
N [Applet] Button wir nach 5 secs Unsichtbar Tools - Maven, Gradle, Ant & mehr 2
N jar -> applet wie setzt man das am leichtesten um Tools - Maven, Gradle, Ant & mehr 7
V applet Java 1.6 -> 1.5 Problem ... wie mit Ant zu lösen? Tools - Maven, Gradle, Ant & mehr 7
F applet als JAR -> AccessControlException Tools - Maven, Gradle, Ant & mehr 3
grudge File in Applet laden Tools - Maven, Gradle, Ant & mehr 4
E Java Applet - Double Buffering Problem (Flackern) Tools - Maven, Gradle, Ant & mehr 6
R Applet mit bestimmter JRE ausführen Tools - Maven, Gradle, Ant & mehr 9
traysa Wie binde ich ein applet in eine jsp Tools - Maven, Gradle, Ant & mehr 3
D Mit dem Applet das DOM manipulieren? Tools - Maven, Gradle, Ant & mehr 3
ABstraCT Applet getCodeBase() Zugriff auf darüberliegendenden Ordner ? Tools - Maven, Gradle, Ant & mehr 1
S Java-Applet Steuerung IO Karte am Drucker-Port Tools - Maven, Gradle, Ant & mehr 4
P URL aus Applet öffnen? Tools - Maven, Gradle, Ant & mehr 7
ABstraCT Mit Applet in ne Datei auf seinem Server schreiben. Tools - Maven, Gradle, Ant & mehr 10
E Verzögerung beim Refresh (F5) mit einem Applet verursachen Tools - Maven, Gradle, Ant & mehr 16

Ähnliche Java Themen

Neue Themen


Oben