# Hintergrundbild + Buttons



## fatmc (12. Juni 2005)

Hi!
Und zwar habe ich ein Menüfenster für ein Spiel entworfen und möchte diesem Menüfenster ein Hintergrundbild geben.
Ich habe auch schon ein Fenster wo ein Bild ausgegeben wird, nur schaffe ich es nich  nun diese beiden so zusammen zu fügen , das ich die Buttons und das Bild im Hintergrund habe.Bei meinen Versuchen hat das Bild die Buttons überschrieben! 

Ich poste mal beide Quelltexte ,in dem Hoffen , dass jemand von euch es vielleicht schafft diese beiden erfolgreich zusammen zu fügen!
(also das die Buttons über/vor dem Bild erscheinen)

Das Menü (Quelltext):

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class Fenster extends Frame implements ActionListener
{

Button one = new Button ("Intro starten");
Button two = new Button ("Spielen");
Button three = new Button ("Anleitung");
Button four = new Button ("Credits");
Button five = new Button ("Beenden");

public Fenster ()
{

super (" Lernpaket ");

FlowLayout Buttons = new FlowLayout (FlowLayout.CENTER);
Panel pane = new Panel (Buttons);
pane.setLayout(Buttons);
Label L = new Label ("TIC TAC TOE ");
add(pane);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
      dispose();
      System.exit(0);
}
});
one.addActionListener(this);
two.addActionListener(this);
three.addActionListener(this);
four.addActionListener(this);
five.addActionListener(this);

pane.add(L);
pane.add(one);
pane.add(two);
pane.add(three);
pane.add(four);
pane.add(five);
one.setBackground(Color.pink);
two.setBackground(Color.pink);
three.setBackground(Color.pink);
four.setBackground(Color.pink);
five.setBackground(Color.pink);
L.setFont (new Font ("Monospaced", Font.BOLD,30));
setSize (500, 200);
//setBackground(Color.blue);
new ImageIcon("C:/ring.jpg");
setVisible (true);

}

public static void main(String arg[])
{
     new Fenster();
}

public void actionPerformed(ActionEvent e)
{
  if(e.getSource()==one)
 {
     try {
Runtime.getRuntime().exec("C:\\Programme\\QuickTime\\QuickTimePlayer.exe TicTacToeIntro.mov");
} catch( IOException ex) {


}

}


}

}



Das Fenster mit dem Bild (Quelltext):

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * @author Darimont
 */
public class PanelWithImage extends JFrame {

	public PanelWithImage() {
		super("PanelWithImage");
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		JLabel label = new JLabel(
				new ImageIcon(
						"C:/ring.jpg"));
		JPanel panel = new JPanel();
		panel.add(label);
		this.getContentPane().add(panel);

		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new PanelWithImage();
	}

}


Hoffe von euch eine Lösung zu erhalten.
Vielen Dank schonmal, euer fat


----------



## elmato (12. Juni 2005)

du schon wieder lol ^^
ne nur ein spaessle..
probiere es mal mit 

```
one.setBackground(Color.pink);
one.setOpaque(false);
two.setBackground(Color.pink);
two.setOpaque(false);
usw.
```
ach ja und wenn du code postest benutze bitte [   code     ]   und [  /   code  ] ohne leerzeichen natuerlich


----------



## fatmc (12. Juni 2005)

hmm...danke , aber ich verstehe deine Lösung nicht ganz!   
kannst du es vielleicht mal am Beispiel meiner Quelltexte machen?
Wäre echt nett. Danköö fat


----------



## elmato (12. Juni 2005)

fatmc hat gesagt.:
			
		

> Hi!
> Und zwar habe ich ein Menüfenster für ein Spiel entworfen und möchte diesem Menüfenster ein Hintergrundbild geben.
> Ich habe auch schon ein Fenster wo ein Bild ausgegeben wird, nur schaffe ich es nich  nun diese beiden so zusammen zu fügen , das ich die Buttons und das Bild im Hintergrund habe.Bei meinen Versuchen hat das Bild die Buttons überschrieben!
> 
> ...


bitte schoen................


----------



## fatmc (12. Juni 2005)

Dankeschön!   
Nur es gibt eine Fehlermeldung , die lautet: "cannot resolve symbol - method setOpaque (boolean)"

wo liegt denn der Fehler?was ist denn dieses Opaque? weisst du warum es zu dieser Fehlermeldung kommt?

MFG fat


----------



## zerix (13. Juni 2005)

lösch einfach mal diese zeilen raus 
one.setOpaque(false)

setOpaque mach das element durchsichtig, wenn es auf true steht


----------



## elmato (13. Juni 2005)

aber genau das wollte er ja verhindern, das sein background eben nicht die button uebermalt....darum dachte ich sole er doch mal versuchen die Opaque auf false zu setzen.. hast du eine andere idee zerix
@fat nein ich weiss im moment leider nicht warum dieser fehler kommt, ich brauch auch erstmal nen zweiten kaffee *wachwerd*


----------



## elmato (13. Juni 2005)

ich habe es jetzt hinbekommen allerdings nur mit swing und nicht mit awt. macht dir das was aus? wenn ja dann programmiers doch selber  lol wenn nein dann ist hier der code

```
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import sun.awt.WindowClosingListener;

import java.io.*;

public class PanelWithImage extends JPanel implements ActionListener
{

Button one = new Button ("Intro starten");
Button two = new Button ("Spielen");
Button three = new Button ("Anleitung");
Button four = new Button ("Credits");
Button five = new Button ("Beenden");
Image image = null;
public PanelWithImage()
{

image = Toolkit.getDefaultToolkit().getImage("c:\\p.png");

FlowLayout Buttons = new FlowLayout (FlowLayout.CENTER);

JLabel L = new JLabel ("TIC TAC TOE ");


one.addActionListener(this);
two.addActionListener(this);
three.addActionListener(this);
four.addActionListener(this);
five.addActionListener(this);

this.add(L);
this.add(one);
this.add(two);
this.add(three);
this.add(four);
this.add(five);

one.setBackground(Color.pink);

two.setBackground(Color.pink);

three.setBackground(Color.pink);

four.setBackground(Color.pink);

five.setBackground(Color.pink);

L.setFont (new Font ("Monospaced", Font.BOLD,30));
L.setOpaque(false);
setSize (500, 200);
//setBackground(Color.blue);




}



public void actionPerformed(ActionEvent e)
{
  if(e.getSource()==one)
 {
     try {
Runtime.getRuntime().exec("C:\\Programme\\QuickTime\\QuickTimePlayer.exe TicTacToeIntro.mov");
} catch( IOException ex) {


}
 
}
if(e.getSource() == two){
	PanelWithImage p = new PanelWithImage();
}

}
public void paintComponent(Graphics g) {
    super.paintComponents(g); //paint background
    if (image != null) { //there is a picture: draw it
        int height = this.getSize().height;
        int width = this.getSize().width;         
        g.drawImage(image,0,0, width, height, this);
		System.out.println("in paint component");
        //g.drawImage(image, 0, 0, this); //original image size
     }  //end if
} //end paint

}
```

musst dir dann noch ein frame bauen alla


```
public class Fenster  extends JFrame {

	public Fenster() {
		PanelWithImage p = new PanelWithImage();
		getContentPane().add(p, BorderLayout.CENTER);
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		PanelWithImage p = new PanelWithImage();
		p.setVisible(true);
	}

}
```

halt noch die windowlistener einfuegen und machen was du machen willst, bild pfad eingeben starten froh sein ^^
<-- geht mehr kaffee holen


----------

