Inhalt (=ehem. Applikation) in Applet unsichtbar

Status
Nicht offen für weitere Antworten.
Hallo zusammen,

da dies mein erster Post hier ist, erst mal einen fetten Gruß an alle :). Und hier schon mein Problem:

Bin nich so erfahren im Umgang mit Applets. Ich habe aber vor, eines zu schreiben. Dabei möchte ich das so gestalten, dass mein Programm an sich ein JPanel ist (genau so gut müsste auch JComponent funktionieren, oder?) und ich es somit relativ einfach in das Applet adden könnte.

Wenn ich das allerdings so mache, wie im Moment, dann seh ich im Applet erstamol nüscht. Erst, wenn ich Elemente benutze, werden sie sichtbar. Ich hab das ganze Programm mal auf ein Beispiel mit 4 Buttons reduziert, der Übersicht halber. Starte ich das ganze als Applikation, habe ich übrigens keine Probleme.

Hier hab ichs mal hochgeladen.

(zur Info: ich will einen Calculator für das Spiel Diablo 2 schreiben, also nicht über die Namen wundern :wink:)

Index.html:
Code:
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
	code	= "D2DamageCalc.class"
	width	= "500"
	height	= "300"
	>
</APPLET>
</CENTER>
</BODY>
</HTML>

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

public class D2DamageCalc extends JApplet {
	
	public void init() {
		getContentPane().setLayout(new GridLayout(1, 1));
		getContentPane().add(new D2DCMain());
	}

	public void paint(Graphics g) {
	}
}

Bis hierhin habe ich ja eigentlich ein leeres Applet erstellt, in welches die eigentliche Klasse eingebunden wird:

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

public class D2DCMain extends JPanel {
	
	public static void main(String[] args) {
		JFrame win = new JFrame("D2 Damage Calculator");
		win.getContentPane().add(new D2DCMain());
		win.pack();
		win.show();
	}
	
	D2DCMain(){
		add(new JButton("0"), 0);
		add(new JButton("1"), 1);
		add(new JButton("2"), 2);
		add(new JButton("3"), 3);
	}	
	private void init_results() {
		
	}
	private void init_controls() {
	}
	
}

Diese Klasse hat halt auch eine main-Methode zum 'selbst-starten'. Die unwichtigen Zeilen habe ich alle weggelassen.

Wenn ich mir das ganze so im Appletviewer oder im Browser anzeigen lasse, sehe ich die Buttons erst, wenn ich draufklicke.

Wie kann ich das Problem beheben?

Vielen Dank schon mal fürs bis-hierhin-lesen :),
MfG,
Tim
 

foobar

Top Contributor
Code:
D2DCMain(){
      add(new JButton("0"), 0);
      add(new JButton("1"), 1);
      add(new JButton("2"), 2);
      add(new JButton("3"), 3);
      setVisible(true);
   }
 
foobar hat gesagt.:
Code:
D2DCMain(){
      add(new JButton("0"), 0);
      add(new JButton("1"), 1);
      add(new JButton("2"), 2);
      add(new JButton("3"), 3);
      setVisible(true);
   }

Danke, hab das soeben probiert, aber es ändert nichts. Ich seh die Buttons erst, wenn ich dort hinklicke, wo sie sind.

Hab übrigens in den ersten Post die URL reineditiert, wo ichs mal hochgeladen hab.
Hier
 

foobar

Top Contributor
Sorry, du ich dachte D2DCMain wäre die Appletklasse.
Code:
public class D2DamageCalc extends JApplet {
   
   public void init() {
      getContentPane().setLayout(new GridLayout(1, 1));
      getContentPane().add(new D2DCMain());
      setVisible(true);
   }
}
Warum überschreibst du die Paintmethode?
 
foobar hat gesagt.:
Sorry, du ich dachte D2DCMain wäre die Appletklasse.
Code:
public class D2DamageCalc extends JApplet {
   
   public void init() {
      getContentPane().setLayout(new GridLayout(1, 1));
      getContentPane().add(new D2DCMain());
      setVisible(true);
   }
}
Warum überschreibst du die Paintmethode?

Kein Problem, ich weiß eh nicht, was das für ein Unterschied macht in diesem Fall :).

Das setVisible() in der init()-Methode der Applet-Klasse wieder nüscht. Aber:

Ich hab die paint()-Methode auskommentiert, und schon funktioniert alles bestens, danke für die Idee :)!
(Die war noch ausm Template drin)
 
M

MR Q

Gast
Naja, solltest Du doch mal paint überschreiben wollen und trotzdem noch graphische Komponenten (wie Buttons) nutzen wollen, dann kannst Du das ganz einfach so:

Code:
public void paint(Graphics g) {
   super.paint(g);
 
   //irgendwas zeichnen
}
[code]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Java Applikation an Clients verteilen Tools - Maven, Gradle, Ant & mehr 5
S Webstart Webstart einer Applikation mit einer veralteten JNLP-Datei Tools - Maven, Gradle, Ant & mehr 6
T Applikation mit VM verpacken? Tools - Maven, Gradle, Ant & mehr 10
S Java Applikation als Windows Service einrichten Tools - Maven, Gradle, Ant & mehr 23
P Java Applikation auf Server Tools - Maven, Gradle, Ant & mehr 7
F bestehende Applikation auch als Applet lauffähig zu machen Tools - Maven, Gradle, Ant & mehr 9
F Applikation (nicht Applet) im Browser starten Tools - Maven, Gradle, Ant & mehr 9
G JApplet parallel zu Java-Applikation entwickeln Tools - Maven, Gradle, Ant & mehr 11
M Brauche Unterstützung bei Chat Applikation Tools - Maven, Gradle, Ant & mehr 1
J Ausführung verhindern Applikation entführt wurde möglich ? Tools - Maven, Gradle, Ant & mehr 3
J Code rennt als Applikation aber nicht als Applet? Tools - Maven, Gradle, Ant & mehr 3
J [JWS] Applikation per Shell-Aufruf mit Parametern Tools - Maven, Gradle, Ant & mehr 2
G Webstart Applikation als Applet in JSP Seite? Tools - Maven, Gradle, Ant & mehr 8
L Applikation Verarb (Server) - Applet als Darstell (Client) Tools - Maven, Gradle, Ant & mehr 5
N Applikation als Applet Tools - Maven, Gradle, Ant & mehr 3
M Applikation --> Applet Tools - Maven, Gradle, Ant & mehr 4
B Eine Applikation in ein Applet umwandeln Tools - Maven, Gradle, Ant & mehr 4
A Applikation vs. Applet Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen


Oben