# JFrame JPanel und Paint(Image)?



## Gast (26. Sep 2007)

Hi,

ich bin dabei ein Spiel zu machen. Ein Freund hat mir geraten JFrame zu nutzen und mit Panels zu arbeiten.
Es werden halt sehr viele Objekte erzeugt......Landschaft, Spielfigur, Inventar, Kaufbildschirme etc etc..

Diese sollten zum Teil Buttons enthalten und natürlich Texturen.(*.gif) Jetzt bin ich soweit, das ich Buttons auf das Panel legen kann und sogar "icons" drauf legen. Nur wie mache ich denn Hintergrund, also das Spielfeld und alles andere. Sind halt alles Grafiken..

Früher habe ich das in etwa so gemacht.


```
public void paint(Graphics g){
		g.setFont(georgia10);
		g.setColor(Color.WHITE);
		g.drawImage(texture[0], 0, 32, this);
		g.drawString("Neues Spiel", 65, 530);
		g.drawString("Speichern", 218, 530);
		g.drawString("Laden", 376, 530);
		g.drawString("Beenden", 520, 530);		
	}
	
	public void update(Graphics g) {
		switch (windowmode) {
		case 0:paint(g);break;
		default:break;
		} 
	}
```

Buttons waren nur "Bereiche" die durch x,y abgegrenzt waren auf dem Bildschirm.

Jetzt bin ich in etwa soweit.




```
class ZeichneGraph extends JPanel { 
	Image button=Toolkit.getDefaultToolkit().getImage("texture/imoy.gif");
   public void paintComponent(Graphics g) { 
	   g.drawImage(button, 0, 0, this);
   } 
}

public class Panels{ 
 
   public static void main(String args[]){
       JPanel p1=new JPanel();
       JButton b1=new JButton(new ImageIcon("texture/player.gif"));
       p1.add(b1);
       p1.add(new ZeichneGraph());
       JFrame f = new JFrame(""); 
       f.setSize(640,548);
       f.add(p1);
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       f.setVisible(true); 
   } 
}
```

Wie kann ich jetzt auf so ein Panel genauso die Texturen und Schriften zeichen bzw kann man die Buttons nicht auch wie die Texturen auf dem Panel mit X und Y ansteuern. Weil so ist nur das FlowLayout....gibt es nicht ein "X/Y" Layout wo man selber bestimmen kann, wo welcher Component hinkommt? Wie halt "g.drawImage(texture[0], 0, 32, this);"

Danke schonmal für die Antworten, oder fragt einfach wenn ihr noch was braucht.


----------



## Marco13 (26. Sep 2007)

Häm - so ganz hab' ich's jetzt nicht gerafft. Du kannst prinzipiell 'null' als Layout setzen, und dann die Components mit 
c.setBounds(12,34,56,78);
frei platzieren, aber das macht spätestens dann keinen Sinn mehr, wenn man die Fenstergröße ändert....


----------



## Immer noch der Gast (26. Sep 2007)

nein..fenster ist nicht veränderbar habe ich schon eingestellt. ist auch nicht besonders effektiv bei einem Spiel das Fenster zu veränder.(Gibts was für Vollbild?)

So sah mal mein altes Spiel aus was auf paint beruhte.







Man kann halt auf denn Feldern laufen und es kommen beim benutzen immer extra neue Texturen drauf. Wie diese "Laden/Speichern" Bereich. Das würde ich jetzt gern durch richtige Buttons ersetzen, und die Hintergrundgrafik dennoch zeichen, halt ein *.gif Bild in denn Hintergrund legen.


----------



## Gast (26. Sep 2007)

http://img146.imageshack.us/my.php?image=ilsh2.jpg

Will wohl nicht mit img..


----------



## Marco13 (26. Sep 2007)

Naja - wenn das erstmal richtige Buttons sind, ist doch egal, WO genau die sind?! Das Panel mit den beiden Buttons drauf wird einfach irgendwo in der Bildmitte platziert - danach sind die x/y-Koordinaten egal, man bekommt den Buttonklick ja über einen ActionEvent mit!?


----------



## Gast (26. Sep 2007)

Das Bild sind eigene Buttons...wenn man auf denn bereich klickt, wird perr MouseListener das ausgewertet anhand der X,Y Koordinaten. Mir gehts eigentlich um das "Mouse Over" Feature von JFrame.

Ich habe einen Fähigkeitsbaum. Wenn ich jetzt über die Bilder da drüber gehe soll ein kleine "Hilfefenster" also beschreibung erzeugt werden. Wie mache ich das ohne Panels?


----------



## Guest (2. Okt 2007)

Reicht da nicht ein Tooltip?


----------

