das Thema Backgroundbild stirbt nie

Status
Nicht offen für weitere Antworten.
Hallo Leute,
ich weiß, es gibt unzählige Einträge die das Thema behandeln aber nun da ich alles durchprobiert habe und noch immer am Anfang stehe, muß ich wohl oder Übel noch einmal nerven.


Unter
//Bild im Hintergrund

habe ich nun ein nettes Bild das ich auch ausgegeben bekomme.
Das Problem ist aber ich möchte dies als Hintergrund haben.
Der Text soll drüber liegen, zur Zeit liegt er rechts neben dem Bild.

Ebenso muß das Bild je nach Wahl der Buttons auch gewechselt werden können.

Ich habe viele gefunden aber entweder gabs nur Fehlermeldungen oder es passierte nichts.


Es ist zwar erst der dritte Tag mit Java bei mir aber dennoch hoffe ich das sich einer oder zwei aus langeweile hier etwas behilflich machen könnten.




Code:
import java.awt.*;

import javax.swing.*;

//Event brauchen wir für das Ereigniss, wenn ein Button geklickt wird
import java.awt.event.*;



public class FirstGUI extends JFrame
{
    /**
	 * 
	 */
	private static final long serialVersionUID = -1977237589260932589L;
	private JButton button1;
        private JButton button2;
        private JButton button3;
        private JButton button4;
        private JButton button5;
        private JPanel panelButton;
        private JLabel oben;
        private JLabel anzeige;


    public FirstGUI()
    {
    	super("Wetter Generator v0.1");
    	// super(...) ruft den Konstruktor mit den übergebenen Argumenten der Elternklasse auf
    	// in dem Fall wie new JFrame(...)
    	
    	      this.setSize(800,600);
    	  // this.methode greift auf die Methode der geerbten Klasse zu
          // zentriert das Fenster auf dem Desktop
    	      this.setLocationRelativeTo(null); 
    	      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	      this.getContentPane().setLayout(new BorderLayout(0,0));
    	      
    	      
    	      //this.setResizable( false );
    	      
        //Buttons erzeugen
        button1 = new JButton("Winter");
        	button1.setSize(100,100);
        button2 = new JButton("Frühling");
        	button2.setSize(100,100);
        button3 = new JButton("Sommer");
        	button3.setSize(100,100);
        button4 = new JButton("Herbst");
        	button4.setSize(100,100);
        button5 = new JButton("Info");
       

        //Panels erzeugen
        panelButton = new JPanel(new GridLayout(12,1));
        

        //Auf Panel Buttons packen
        panelButton.add(button1);
        panelButton.add(button2);
        panelButton.add(button3);
        panelButton.add(button4);
        panelButton.add(button5);

        //Listener für Buttons
        addButtonListener(button1);
        addButtonListener(button2);
        addButtonListener(button3);
        addButtonListener(button4);
        addButtonListener(button5);

 
// sucht header.gif in dem Verzeichnis, in dem die .class Datei liegt, welches so auch innerhalb eines jar sein kann
		ImageIcon icon = new ImageIcon( FirstGUI.class.getResource("header.jpg") );
	        oben = new JLabel(icon,JLabel.CENTER); // horizontale Ausrichtung
        		
        
        
		// position des textes setzen, relativ zum bild:
		//oben.setVerticalTextPosition(JLabel.TOP);
		//oben.setHorizontalTextPosition(JLabel.CENTER);
		
        //Label zentrieren
        oben.setHorizontalAlignment(JLabel.CENTER); 
        
      //Bild im Hintergrund
		ImageIcon iconBack = new ImageIcon( FirstGUI.class.getResource("back.jpg") );
        anzeige = new JLabel("<html><center>[b]Wähle Die gewünschte Jahreszeit
" +
        		"</center></html>",
				iconBack,
				JLabel.CENTER // horizontale Ausrichtung
		);
		
        anzeige.setHorizontalAlignment(JLabel.CENTER); 
        anzeige.setVerticalAlignment(JLabel.TOP);

      //Labels auf Frame packen
        this.add(oben, BorderLayout.NORTH);
        this.add(anzeige, BorderLayout.CENTER);

        //Panels auf Frame packen
        this.add(panelButton, BorderLayout.WEST); 
        //this.pack();
        this.setVisible(true); 
        //this.repaint();
    }

    public static void main(String[] args)
    {
        FirstGUI g = new FirstGUI();
    }

    private void addButtonListener(JButton b)
    {
        b.addActionListener(new ActionListener()
        { 
            public void actionPerformed(ActionEvent ae) 
            { 
               eingabe(ae.getActionCommand());
            	            		
            }
        });
    }

    private void eingabe(String a)
    {
    	
    	if (a == "Sommer"){
    		anzeige.setText("Sommer");
    	}else if(a == "Winter"){
    		anzeige.setText("Winter");
    	}else if(a == "Frühling"){
    		anzeige.setText("Frühling");
    	}else if(a == "Herbst"){
    		anzeige.setText("Herbst");
    	}else if(a == "Info"){
    		anzeige.setText("Info");
    	}else{
    		anzeige.setText("Diese Jahreszeit gibt es nicht");
    	}
    	
    	//anzeige.setText(a);
     }  

}
 

The_S

Top Contributor
für ein Hintergrundbild solltest du die paintComponent-Methode deiner Component-Klasse überschreiben, und dort das Bild selbst zeichnen.
 
was auch immer das heißen mag...
ich werde es mal versuchen, also erstmal nachlesen^^
Danke schon mal, melde mich dann wieder ob ich erfolgreich war
 

Mewel

Aktives Mitglied
Oder du nutzt JLayeredPane.

z.B.

Code:
public class TestMenu extends JLayeredPane {

	public JLabel image = new JLabel();
	public String backgroundImage;
	public JPanel menu;
	
	public TestMenu(JPanel newMenu, String background) {
		menu = newMenu;
		backgroundImage = background;
		image.setVerticalAlignment( JLabel.TOP );

		loadBounds();

		this.add(image, JLayeredPane.DEFAULT_LAYER);
		this.add(menu, JLayeredPane.PALETTE_LAYER);
	}

	private void loadBounds() {
		// image
		Dimension windowSize = getSize();
		if(windowSize.height != 0 && windowSize.height != 0) {
			image.setBounds(0, 0, windowSize.width, windowSize.height);
			
			// icon
			Image icon = new ImageIcon(backgroundImage).getImage().getScaledInstance(windowSize.width, windowSize.height, Image.SCALE_FAST);
			image.setIcon( new ImageIcon(icon) );
		}

		// menu
		Dimension menuSize = menu.getSize();
		int menuX = (windowSize.width / 2) - (menuSize.width / 2);
		int menuY = (windowSize.height / 2) - (menuSize.height / 2);
		menu.setBounds(menuX, menuY, menuSize.width, menuSize.height);
	}

	@Override
	public void doLayout() {
		loadBounds();
		super.doLayout();
	}
}

String background -> Pfad des Bildes, JPanel newMenu -> Panel auf dem Komponenten abgelegt werden können. Ist nen Beispiel von mir, musst für deinen Fall entsprechend abwandeln.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben