2 Bilder übereinander

wenn du komponente übereinander legen willst benutze das JLayeredPane

hier ein Beispiel (musst die Pfade zu dem Bildern noch ändern.)

Code:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;

public class Spiel extends JFrame  {
    JLabel     jl_landscape, jl_figur, jl_spiel;
    JLayeredPane jlp = new JLayeredPane();

    Spiel()
    {

        jl_landscape = new JLabel();
        jl_landscape.setIcon(new ImageIcon("C:\\Blaue Berge.jpg"));
        jl_landscape.setBounds(0,0,600,400);
        jl_landscape.setOpaque(true);
        jl_landscape.setVisible(true);
        jl_figur = new JLabel();
        jl_figur.setIcon(new ImageIcon("C:\\ball.gif"));
        jl_figur.setBounds(100,100,250,250);

        jlp.add(jl_landscape, 1);
        jlp.add(jl_figur, 0);
        this.add(jlp);
    }
    
    public static void main(String[] args) {
        Spiel newSpiel = new Spiel();
        newSpiel.setVisible(true);
        newSpiel.setSize(600, 400);
        
    }
}
 
Zuletzt bearbeitet:
danke...
da tritt bei mir aber immer ein fehler auf:

Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Container.java:1011)
at java.awt.Container.add(Container.java:395)
at Spiel.<init>(Spiel.java:27)
at Spiel.main(Spiel.java:41)

was bedeutetn das?

EDIT: ne geht odch^^
 
Zuletzt bearbeitet:
Hallo!
Ich hab den code hier ziemlich genau übernommen. Nur hab ich jetzt das Problem: Wenn ich ne Mainmethode schreib die die spielklasse benutzt - funktioniert alles super. Wenn ich die Klasse aber in einem bereits geschriebeneem , in der Konsole Laufendeem Spiel benutze - bekomme ich nur ein weißes Fenster zu sehen. Weiß jemand einen Rat? Ich verzweifel langsam...
für schnelle Hilfe wäre ich dankbar

Maxim
 
Könntest du mal den Code zeigen, wie du es aufrufst?
Was meinst du eigentlich mit "in der Konsole laufendem Spiel"?

Gruß

Sascha
 
Danke für die Antwort
Es geht um Monopoly. Das Spiel kann man in der Konsole Spielen. Jetzt fehlt noch die Gui. Mit der hab ich so meine Probleme. Wenn ich die Mainmethode in der guidatei aufruf läuft alles gut. Wenn di von der Unteren Klasse Spiel aufgerufen wird erscheint n weißes Fenster. Das ist sehr merkwürdig. Im Anhang is auch s ganze Projekt. EDIT: Gestartet wird das Ganze mit Startdialog.

Das ist die Klasse mit dem Bild im JFrame mit den Methoden zum Figuren zeichnen

Code:
package gui;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
 
public class Guitest extends JFrame  {
    JLabel     brettlabel, figurlabel, jl_spiel;
    static JLayeredPane jlp = new JLayeredPane();
 
    
    {
 
        brettlabel = new JLabel();
        brettlabel.setIcon(new ImageIcon("./brett.jpg"));
        brettlabel.setBounds(0,0,600,400);
        brettlabel.setOpaque(true);
        brettlabel.setVisible(true);
        
        jlp.add(brettlabel, 1);
        this.add(jlp);
    }
    public  void zeichnekreis (int col, int x,int y){
    	Kreis jl_figur = new Kreis(col);
    	jl_figur.setBounds(x,y,100,100);
    	jlp.add(jl_figur,0);
    }
	

	public static void main(String[] args) {
        Guitest newSpiel = new Guitest();
        newSpiel.setVisible(true);
        newSpiel.setSize(600, 400);
        newSpiel.zeichnekreis (1, 100,100);
        
    }
}

Das ist die Klasse zum Spiel

Code:
package tui;

import gui.Gui;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Spiel {
	
	static int letzter_spieler = -1;
	
	public static void view(meinSpiel.Spiel spiel){
		Guitest newSpiel = new Guitest();
		newSpiel.setVisible(true);
                newSpiel.setSize(600, 400);
		System.out.println("Aktueller Geldstand:");
		for (int i = 0; i< spiel.AnzahlSpieler(); i++)
		{
			System.out.println("Spieler " + i + " hat " + spiel.getSpieler(i).Geldstand() + " Euro"  );
		}

		int runde = 0;
		
		while(true)
		{
			System.out.println("Runde " + runde + " wird gestartet.");
			
			System.out.println("-------------------------------------------");
			System.out.println("Aktueller Geldstand zu Beginn der Runde:");
			for (int z = 0; z< spiel.AnzahlSpieler(); z++)
			{
				if(!spiel.getSpieler(z).hatVerloren())
				{
				  System.out.println("Spieler " + z + " hat " + spiel.getSpieler(z).Geldstand() + " Euro"  );
				}
			}
			System.out.println("-------------------------------------------");
			
			for(int j=0; j < spiel.AnzahlSpieler();j++)
			{
				if(!spiel.getSpieler(j).hatVerloren())
				{
				  if(j == letzter_spieler)
				  {
					  return;
				  }
				  
				  letzter_spieler = j;
				
				  System.out.println("Spieler " + j + " ist an der Reihe.");
				  spiel.getSpieler(j).bewegen(spiel);
				  System.out.println("Spieler " + j + " würfelt eine " + spiel.LetzteAugenzahl() + " und kommt auf Feld " + spiel.getSpieler(j).aktuellePosition(spiel).feldnamen() + ".");
			      if(spiel.kamUeberLos())
			      {
				    System.out.println("Spieler " + j + " kam hierbei über Los und bekommt 4000 Euro.");
			      }
			    
			      if(spiel.kann_kaufen())
			      {
			   
			    	System.out.println("Spieler " + j + " kann das Feld " + spiel.getSpieler(j).aktuellePosition(spiel).feldnamen() +  "kaufen.");
			    	System.out.println("Wollen Sie das Feld kaufen? [ja/nein]");
			    	
			    	String eingabe = "";
			    	
			    	BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
			    	
			    	while(!eingabe.equals("ja") && !eingabe.equals("nein"))
			    	{
			    		try {
			    			eingabe = console.readLine();
			    		} catch (IOException e) {
			    			e.printStackTrace();
			    		}
			    	}
			    	
			    	if(eingabe.equals("ja"))
			    	{
			    		spiel.setze_will_kaufen();
			    		System.out.println("Sie haben das Feld gekauft.");
			    	}
			    	else
			    	{
			    		System.out.println("Sie haben den Kauf abgelehnt.");
			    	}

			    }
			    else if(spiel.muss_zahlen()){
			    	System.out.println("Spieler " + j + " muss an Spieler x y Euro Miete bezahlen.");
			    	
			    }
			    
			    spiel.getSpieler(j).fuehre_Aktion_Aus(spiel);
			  }
			}
			
						
			runde++;
			
			System.out.println("===========================================");
		}
		
	}

}
 

Anhänge

Zuletzt bearbeitet:
Zurück