# Unterschied JFrame/Applet



## Blackened Sky (11. Feb 2009)

Gudn,

ich habe einen Button mit einem Icon in einem Applet der richtig angezeigt wird:


```
public class progApplet extends Applet {
	
	public void init(){
		
		setBounds(100, 100, 500, 500);
		setVisible(true);
		setLayout(null);
		
		JButton Knopf = new JButton();
		Knopf.setBounds(10, 10, 80, 100);
		Knopf.setIcon(new ImageIcon("bild.jpg"));
		add(Knopf);
	}

}
```

und einen Button in einem JFrame der NICHT richtig angezeigt wird:


```
public class progJFrame extends JFrame {
	
	public static void main(String[] args){
	
		JFrame Fenster = new JFrame();
		Fenster.setBounds(100, 100, 500, 500);
		Fenster.setVisible(true);
		Fenster.setLayout(null);
		
		JButton Knopf = new JButton();
		Knopf.setBounds(10, 10, 80, 100);
		Knopf.setIcon(new ImageIcon("bild.jpg"));
		Fenster.add(Knopf);	 
	}

}
```

Muss ich für das JFrame das ImageIcon auf eine andere Art einlesen?

Vielen Dank,
gruß BlaSk


----------



## Michael... (11. Feb 2009)

Was heißt "NICHT richtig angezeigt" ??


----------



## Blackened Sky (11. Feb 2009)

Im Applet wird das Bild auf dem Button angezeigt.
Im JFrame wird das Bild auf dem Button nicht angezeigt.

Sprich ich sehe nur die Standart hintergrundfarbe. Screenshot?


----------



## Drake (11. Feb 2009)

setVisible() als letztes setzen, ansonsten frame.validte()


----------



## Blackened Sky (11. Feb 2009)

Drake hat gesagt.:
			
		

> setVisible() als letztes setzen, ansonsten frame.validte()



Es hat anscheinend nicht rein mit dem Anzeigen zu tun da deine Ansätze und eine umstruckturierung des Codes auch nicht helfen.

Ich habe mir mal die Höhe des Bildes in der Console ausgeben lassen. Trotz genau gleichem Code, kommt beim JFrame -1 und beim Applet richtig 100 raus.


```
public class progApplet extends Applet{
	
	public void init(){
	
		
		ImageIcon Bild = new ImageIcon("Bild.jpg");
		JButton Knopf = new JButton();
		
		Knopf.setBounds(10, 10, 80, 100);
		Knopf.setIcon(Bild);
		add(Knopf);

		setLayout(null);
		setVisible(true);
		
		System.out.println(Bild.getIconHeight()); // Hier kommt 100 raus.
	}
}
```


```
public class progJFrame extends JFrame {
	
	public static void main(String[] args){
	
		JFrame Fenster = new JFrame();
		ImageIcon Bild = new ImageIcon("Bild.jpg");
		JButton Knopf = new JButton();
		
		Knopf.setBounds(10, 10, 80, 100);
		Knopf.setIcon(Bild);
		Fenster.add(Knopf);	

		Fenster.setLayout(null);	
		Fenster.setVisible(true);
		
		System.out.println(Bild.getIconHeight()); // Hier kommt 100 raus.
	}
}
```

Wie kann das sein? Die Klassen sind im selben Projekt, selber Ordner etc.


----------



## Blackened Sky (11. Feb 2009)

Der kommentar im 2. Code soll natürlich "// Hier kommt -1 raus" sein.


----------



## GermanPsycho (11. Feb 2009)

Nabend nochmal,

hat niemand eine Idee? Brauchts noch mehr Infos? Mehr Text als ich gepostet habe gibts nicht  

Grundsätzlich gibt es also keine unterschiedliche Methode das ImageIcon ein zu lesen?

Danke...


----------



## __zzz__ (11. Feb 2009)

Dein Bild wird einfach nicht gefunden und hat deshalb die Größe -1.

http://java.sun.com/docs/books/tutorial/uiswing/components/icon.html findest du nochmal was zum Nachlesen.

When you specify a filename or URL to an ImageIcon constructor, processing is blocked until after the image data is completely loaded or the data location has proven to be invalid. If the data location is invalid (but non-null), an ImageIcon is still successfully created; it just has no size and, therefore, paints nothing. 

Probiers doch mal mit getResource() ... siehe http://java.sun.com/docs/books/tutorial/uiswing/components/icon.html#getresource


----------



## GermanPsycho (11. Feb 2009)

Blackened Sky hat gesagt.:
			
		

> Wie kann das sein? Die Klassen sind im selben Projekt, selber Ordner etc.



Das ist ja der Witz an der Geschichte! Ich benutze Eclipse und die beiden Klassen liegen in dem selben Projekt, in dem selben Ordner und greifen auf genau die selbe Datei zu! 

Die beiden .class Dateien liegen genau neben dem Bild im Ordner.

Ich habs mehrmals mit verschiedenen Projekten versucht um aus uschließen das es daran liegt das ich die Datei ausversehen in den falschen Ordner gepackt habe!

Mir ist bewusst das -1 heisst das die Datei nicht gefunden wurde, deshalb meine Frage ob es einen anderen Weg gibt sie einzulesen...

Trotzdem schon mal danke für die Antworten.


----------



## GermanPsycho (12. Feb 2009)

Holla, ich noch ma.

Keiner noch ne Idee dazu?

Danke, lg GP


----------



## Ebenius (12. Feb 2009)

```
new ImageIcon(progJFrame.class.getResource("Bild.jpg"));
```
Anbei: Du hast irgendwas mit den Benennungsregeln verwechselt.
Klassennamen *CamelCase*
Variablennamen *camelCase*
Ebenius


----------



## GermanPsycho (12. Feb 2009)

Danke, danke, danke!

__zzz__ hat zwar schon getResource() angepsrochen aber ich habs leider nicht hinbekommen!

So funktionierts vielen dank Ebenius!!


----------



## L-ectron-X (13. Feb 2009)

Noch mal am Rande: In ein Applet sollte kein JButton oder eine andere Swing-Klasse hinzugefügt werden.
Applet ist AWT-Technik, und sollte mit JApplet ersetzt werden. (Swing und AWT nicht mischen)


----------

