JApplet in Browserfenster maximieren

TheMuh

Mitglied
ich habe zwar diverse Dinge ergoogelt und ausprobiert, aber so richtig will es nicht funktionieren....
ich schaffe es nicht, dass das JApplet auch in der Höhe den gesamten freien Browserbereich ausnutzt.. wie erreiche ich das bitte ?

Die HTML Seite:
Java:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>NOUS</title>
<meta name="author" content="Muh">
<meta name="editor" content="html-editor phase 5">
<style type="text/css" media="all">
html, body {
         background-color: #333333;
         margin: 0;
         padding: 0;
         height: 100%; /* WICHTIG!!! STRECKT ANZEIGENBEREICH AUF 100% */
}
#wrapper {
         background-color: #FFFFFF;
         width: 80%;
         margin: auto; /* Div soll zentriert werden */
         min-height: 100%; /* Mindesthöhe für moderne Browser */
         height:auto !important; /* Important Regel für moderne Browser */
         height:100%; /* Mindesthöhe für den IE */
         overflow: hidden !important; /* FF Scroll-leiste */
}
</style>
</head>
<body>
<div id="wrapper">
<APPLET CODE="Start.class" codebase="bin" height = "100%" width="100%">
</APPLET>
</div>
</body>
</html>

Die StartKlasse:
Java:
import javax.swing.JApplet;
import GUI.*;


public class Start extends JApplet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * @param args
	 */
	
	public void init() {
	  DesignBuilder.Start(getContentPane());
	}
	  .......
	
}

Die DesignBuilder Klasse:
Java:
import java.awt.*;
import javax.swing.*;

public class DesignBuilder {
	
	static void addComponent(Container cont, GridBagLayout gbl, Component c,
			int x, int y, int width, int height, double weightx, double weighty) {
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.fill = GridBagConstraints.BOTH;
		gbc.gridx = x;
		gbc.gridy = y;
		gbc.gridwidth = width;
		gbc.gridheight = height;
		gbc.weightx = weightx;
		gbc.weighty = weighty;
		gbl.setConstraints(c, gbc);
		cont.add(c);
	}
	
	public static void Start(Container a) {
		GridBagLayout gbl = new GridBagLayout();
		a.setLayout(gbl);

		addComponent( a, gbl, new JButton("1"), 0, 0, 2, 2, 1.0, 1.0 );
	    addComponent( a, gbl, new JButton("2"), 2, 0, 1, 1, 0  , 1.0 );
	    addComponent( a, gbl, new JButton("3"), 2, 1, 1, 1, 0  , 0   );
	    addComponent( a, gbl, new JButton("4"), 0, 2, 3, 1, 0  , 1.0 );
	    addComponent( a, gbl, new JButton("5"), 0, 3, 2, 1, 0  , 0   );
	    addComponent( a, gbl, new JButton("6"), 0, 4, 2, 1, 0  , 0   );
	    addComponent( a, gbl, new JButton("7"), 2, 3, 1, 2, 0  , 0   );
	}
}
 

L-ectron-X

Gesperrter Benutzer
Das JApplet hat von Hause aus das BorderLayout, was sich sehr gut dazu eignet, Elemente, automatisch auf volle Größe zu bringen. Wenn du nun das GridBagLayout setzt, kann es sein, dass sich der Inhalt, je nach gesetzten Parametern der GridBagConstraints nicht mehr auf volle Größe "aufblasen" kann.
Daher ist es besser, deine Klasse DesignBuilder von JPanel erben zu lassen, den Inhalt vom Layout her fertig zu erzeugen und dieses dann als Element des JApplets hinzuzufügen.
 

TheMuh

Mitglied
hmmmm leider passiert genau das selbe wenn ich ein JPanel erzeuge und dies dem JApplet übergebe ...
die Höhe lässt sich überhaupt nicht beeinflussen :/ ..ebenso verwundert mich das ich zwar ohne Fehlermeldung eine Size oder PreferedSize für das Panel einstellen könnte, es wird aber überhaupt nicht berücksichtigt, weder im Browser noch im Appletviewer ...
was versteh ich falsch ?

Die Java Klasse
Java:
import java.awt.*;

import javax.swing.*;

public class Start extends JApplet {

	private static final long serialVersionUID = 1L;

	public void init() {
	 
	  JPanel backpanel = new JPanel();
	  backpanel.setBackground(Color.BLUE);
	  getContentPane().add(backpanel);
	}
	  
}

Die dazugehörgie HTML Seite:
Java:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>.....</title>
<style type="text/css" media="all">
html, body {
         background-color: #333333;
         margin: 0;
         padding: 0;
         height: 100%; /* WICHTIG!!! STRECKT ANZEIGENBEREICH AUF 100% */
}
#wrapper {
         background-color: #FFFFFF;
         width: 80%;
         margin: auto; /* Div soll zentriert werden */
         min-height: 100%; /* Mindesthöhe für moderne Browser */
         height:auto !important; /* Important Regel für moderne Browser */
         height:100%; /* Mindesthöhe für den IE */
         overflow: hidden !important; /* FF Scroll-leiste */
}
</style>
</head>
<body>
<div id="wrapper">
<APPLET CODE="Start.class" codebase="bin" height = "100%" width="100%">
</APPLET>
</div>
</body>
</html>


Es scheint wohl eher ein HTML als ein Java Problem zu sein ....wenn ich in der HTML Datei feste Werte und keine Prozentwerte vergebe funktionierts .... aber wie kann ich das jetzt relativ zum verfügbaren Bereich programmieren ?
 
Zuletzt bearbeitet:

TheMuh

Mitglied
ok, so funktionierts ;)

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>.....</title>
<style type="text/css" media="all">
html {
         height:100%;
}

body {
         background-color: #333333;
         margin: 0;
         padding: 0;
         height: 100%;
}

* html body
{
 height:100%;
}

#wrapper {
         background-color: #FFFFFF;
         width: 80%;
         margin: auto;
         height: 100%;
         overflow: hidden !important;
}
</style>
</head>
<body>
<div id="wrapper">
<APPLET CODE="Start.class" codebase="bin" height = "100%" width="100%">
</APPLET>
</div>
</body>
</html>

trotzdem nochmals vielen Dank für die Hilfe!!!
 

TheMuh

Mitglied
also die HTML Seite skaliert das gesamte Applet jetzt schön ... notwendig ist es nun natürlich noch, das innerhalb des Java Applets die Inhalte passend skaliert werden. Ich habe das mal mit einem ComponentEvent auf dem ContentPane probiert, es funktioniert zwar grundsätzlich, jedoch nicht fehlerfrei; ab und zu wird nicht auf den gesamten Bereich skaliert usw ...

Kann man das irgendwie sauberer programieren ?
Java:
public class Start extends JApplet {

	private static final long serialVersionUID = 1L;
	private Image bgOrig, bgScaled;
	
	public void init() {
	  System.out.println("init");
	  setContentPane(new bgDrawing());
	  getContentPane().addComponentListener(new Scale());
	  
      try {
    	  bgOrig = ImageIO.read(new URL(getCodeBase(), "image.jpg"));
          
      }
      catch(IllegalArgumentException iae) {
	 JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!");
      }
      catch(IOException ioe) {
	 JOptionPane.showMessageDialog(this, "Fehler beim Einlesen der Grafikdatei!");
      }
      
	}
	  
	public void start() {
	  System.out.println("start");
	  new Scale();
	}
	  
	public void stop() {
	  System.out.println("stop");
	}
	  
	public void destroy() {
	  System.out.println("destroy");
	}
	
	class Scale implements ComponentListener {
		
		@Override
		public void componentHidden(ComponentEvent e) {
			It();
		}

		@Override
		public void componentMoved(ComponentEvent e) {
			It();
		}

		@Override
		public void componentResized(ComponentEvent e) {
			It();
		}

		@Override
		public void componentShown(ComponentEvent e) {
			It();
		}
		
		private void It () {
			bgScaled = bgOrig.getScaledInstance(
		     		 getContentPane().getWidth(),
		     		  getContentPane().getHeight(),
		     		    Image.SCALE_SMOOTH );
		}
	}
	
	private class bgDrawing extends JPanel {
		private static final long serialVersionUID = 1L;

		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			if (bgScaled != null) {
				g.drawImage(bgScaled, 0, 0, this);
			}
		}
	}	
}
 

L-ectron-X

Gesperrter Benutzer
Hier mal noch der versprochene Link: AppletResize-Applet

Auch wenn er dir nicht viel nutzen wird, da du nun ein völlig anderes Konzept vorgestellt hast.
Grundsätzlich ist deine Lösung mit dem ComponentListener richtig, würde ich auch so (ähnlich) machen.
Allerdings müsstest du noch mal näher erläutern, was genau in einem Fehlerfall passiert, also wenn nicht fehlerfrei skaliert wird.
 

TheMuh

Mitglied
getreu dem Motto Bilder sagen mehr als Worte hier ein Teilausschnitt meines Screens ...
Das Problem ist .. der weiße teil sollte eigentlich nicht sichtbar sein, das is der div tag welches das Java Applet eigentlich voll ausfüllen sollte .. manchmal klappts, manchmal muss man bissel rumspielen damits wird .. auf jeden Fall sind die weißen Teilbereiche falsch ...

liegt es vielleicht daran das hier HTML und Java "gleichzeitig" skalieren und das irgendwie deswegen nicht ganz sauber geht ?
 

Anhänge

  • w7or9ec5296.jpg
    w7or9ec5296.jpg
    73,7 KB · Aufrufe: 26
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JApplet Form: JPanel dynamisch füllen Tools - Maven, Gradle, Ant & mehr 3
P JApplet mit Look&Feel? Tools - Maven, Gradle, Ant & mehr 8
S Probleme mit Kombination Java JApplet;MySQL;Webserver Tools - Maven, Gradle, Ant & mehr 3
M Probleme mit JApplet Tools - Maven, Gradle, Ant & mehr 20
G JApplet mit Chat Tools - Maven, Gradle, Ant & mehr 2
C JApplet soll beim Aufruf nicht neustarten Tools - Maven, Gradle, Ant & mehr 3
H JApplet von laufendem JApplet starten Tools - Maven, Gradle, Ant & mehr 8
G JApplet parallel zu Java-Applikation entwickeln Tools - Maven, Gradle, Ant & mehr 11
H JApplet läuft zwar korrekt, bleibt aber unsichtbar Tools - Maven, Gradle, Ant & mehr 3
M JApplet funktioniert nicht Tools - Maven, Gradle, Ant & mehr 5
G Problem mit JApplet bzw Applet Tools - Maven, Gradle, Ant & mehr 5
S aus einem JApplet ein Image in separatem JFrame anzeigen Tools - Maven, Gradle, Ant & mehr 10
N Jars in JApplet Tools - Maven, Gradle, Ant & mehr 2
M Unterschiede-Vorteile Applet/JApplet Tools - Maven, Gradle, Ant & mehr 3
D Runnable JApplet mit Bild/Ovals "übermalt" Buttons Tools - Maven, Gradle, Ant & mehr 6
A Tastatureingaben und JApplet Tools - Maven, Gradle, Ant & mehr 2
M eine Frage über JApplet und JMenuBar Tools - Maven, Gradle, Ant & mehr 6
D JApplet & MouseListener Tools - Maven, Gradle, Ant & mehr 5
L Applet oder JApplet Tools - Maven, Gradle, Ant & mehr 10
M JApplet komplett neu zeichnen Tools - Maven, Gradle, Ant & mehr 3
M JApplet läuft in Eclipse, aber nicht in den Browsern Tools - Maven, Gradle, Ant & mehr 7
S JApplet- Komponentenanzeige Tools - Maven, Gradle, Ant & mehr 7
M ein aus einem JApplet gestartetes JFrame schliessen Tools - Maven, Gradle, Ant & mehr 6
A [GUI] [JApplet] [JDialog] Nochmal die Frage zur Modalität un Tools - Maven, Gradle, Ant & mehr 3
K Bild (jpg) in einem JApplet Tools - Maven, Gradle, Ant & mehr 2
D JApplet Tools - Maven, Gradle, Ant & mehr 11
B Aus Applet neues Browserfenster öffnen? Tools - Maven, Gradle, Ant & mehr 3
J Applet Neustart verhindern bei Neuzeichnen v. Browserfenster Tools - Maven, Gradle, Ant & mehr 5
B Neues Browserfenster automatisch öffnen und schließen Tools - Maven, Gradle, Ant & mehr 2
G Applet maximieren Tools - Maven, Gradle, Ant & mehr 7
M paint() bei maximieren des fensters Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben