Bekomme in meinen JPanel nur eine JComponente angezeigt

Pincalibur

Mitglied
Hi ich bin Umsteiger von .NET und noch sehr unerfahren in Java.
Ich möchte ein kleines Memory Spiel programmieren und müsste dazu Bilder auf einem Panel anzeigen lassen.
Dazu habe ich eine JFrame GUI, ein Interface als Listener und eine Klasse als JComponent die ihr Bild zeichnen soll.
Das Problem was dabei auftritt ist, dass nur die zuletzt hinzugefügte JComponente angezeigt wird.
Dabei will ich natürlich alle angezeigt bekommen.

Java:
public class MemoryGUI  extends JFrame implements GUIListener{

	private static final long serialVersionUID = 1L;
	
	//attributes
	private MemoryGame memoryGame;
	private java.util.List<ViewComponent> componentList = new ArrayList<ViewComponent>();
	private JPanel cardPanel = new JPanel(new BorderLayout());

	//constructors
	public MemoryGUI()
	{
		initComponents();
		memoryGame = new MemoryGame(8);
		createCardComponents();
	}
	
	//methods
	private void initComponents()
	{
		this.setSize(300,300);
		this.setResizable(false);
        this.setLocation(GUItools.getCenteredPoint(this.getSize().height, this.getSize().width));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        cardPanel.setLocation(0,0);
        //cardPanel.setLayout(new BoxLayout(cardPanel, BoxLayout.PAGE_AXIS));
        cardPanel.setSize(this.getSize());
        this.add(cardPanel);
	}
	private void createCardComponents()
	{
		/*int posX = 0;
		int posY = 0;
		int space = 5;
		for(int i = 0; i < memoryGame.getCardList().size(); i++)
		{
			ViewComponent viewComponent = new ViewComponent();
			viewComponent.setID(i);
			File file = new File( ImageSet.ImagePathStr() + ImageSet.cardBackImageStr() + ImageSet.fileFormat());
		    viewComponent.setImage( file );
		    viewComponent.setPosX(posX * (64 + space));
		    viewComponent.setPosY(posY * (64 + space));
			if(posX >= memoryGame.getRowXMaxCount())  { posX = 0; posY++; }
			else { posX++; }	
			viewComponent.setGUIListener(this);
		    componentList.add(viewComponent);
			cardPanel.add( viewComponent );
		}
		this.setSize(memoryGame.getRowXMaxCount() * (64 + space) *2, posY * (64 + space) *2);*/
		ViewComponent viewComponent = new ViewComponent();
		ViewComponent viewComponent2 = new ViewComponent();
		File file2 = new File( ImageSet.ImagePathStr() + ImageSet.cardBackImageStr() + ImageSet.fileFormat());
		File file = new File( ImageSet.ImagePathStr() + ImageSet.cardBackImageStr() + ImageSet.fileFormat());
		viewComponent.setImage( file );
		viewComponent2.setImage( file2 );
		viewComponent.setPosX(0 * (64));
	    viewComponent.setPosY(0 * (64));
	    viewComponent2.setPosX(1 * (64));
	    viewComponent2.setPosY(1 * (64));
	    cardPanel.add( viewComponent2 );
	    cardPanel.add( viewComponent );
	    
	}
	@Override
	public void MouseClicked(ViewComponent sender) {
		Card card = memoryGame.getCardList().get(sender.getID());
		memoryGame.cardChosen(this, card);
		
	}
	@Override
	public void CardFlipped(Card card) {
		File file;
		if(card.isFaceUp())
		{
			file = new File( ImageSet.ImagePathStr() + ImageSet.cardFrontImageStr() + card.getPictureID() + ImageSet.fileFormat());
		}
		else
		{
			file = new File( ImageSet.ImagePathStr() + ImageSet.cardBackImageStr() + ImageSet.fileFormat());
		}	
		componentList.get(card.getID()).setImage(file);
	}
	
}
Java:
class ViewComponent extends JComponent implements MouseListener
{
  private Image image;
  private GUIListener guiListener; 
  private int id;
  private int posX;
  private int posY;
  
  public ViewComponent()
  {
	  super();   
	  this.addMouseListener(this);
  }
  
  public Image getImage()
  {
	  return image;
  }
  public void setImage( File file )
  {
    image = Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );
    if ( image != null )
    {
    	repaint();
    }
  }
  public int getID()
  {
	  return id;
  }
  public void setID(int id)
  {
	  this.id = id;
  }
  public void setGUIListener(Object gui)
  {
	  guiListener = (GUIListener) gui;
  }
  public void setPosX(int x)
  {
	  posX = x;
  }
  public void setPosY(int y)
  {
	  posY = y;
  }
  @Override
  protected void paintComponent( Graphics g )
  {
    if ( image != null )
      g.drawImage( image, posX, posY, this );
  }
	@Override
	public void mouseClicked(MouseEvent arg0) {
		guiListener.MouseClicked(this);
	}
	@Override
	public void mouseEntered(MouseEvent arg0) {
		
	}
	@Override
	public void mouseExited(MouseEvent arg0) {
		
	}
	@Override
	public void mousePressed(MouseEvent arg0) {
		
	}
	@Override
	public void mouseReleased(MouseEvent arg0) {
		
	}
}
Java:
public interface GUIListener {
	public void MouseClicked(ViewComponent sender); 
	public void CardFlipped(Card card);
}
 
G

Gast2

Gast
cardPanel hat nen BorderLayout.
Alle Aufrufe
Code:
cardPanel.add(component)
fügen die Komponenten in den CENTER Bereich ein. Im CENTER kann nur eine Komponente liegen, daher überschreibst du dir da alles.

Warum verwendest du da nen BorderLayout, würde nen GridLayout nicht besser zu nem Memory Spiel passen?
 

Pincalibur

Mitglied
Das BorderLayout hab ich aus einem Beispiel übernommen ohne wirklich zu wissen was es tut.
(Ohne das wurde gar nichts angezeigt)
Aber wenn es daran liegt, welches wäre das passenste um mehrere im selben Panel anzeigen zu lassen?
Das GridLayout beeinflusst das Drawing für mich auch ganz ungünstig.
 

Pincalibur

Mitglied
Kann ich die Bilder nicht einfach mit der paintComponent Methode auf ein Layoutloses Panel anhand ihrer Position zeichnen lassen?
Wenn ich ein Panel ohne Layout erstelle zeigt er nichts mehr an.
 

njans

Top Contributor
Du kannst praktisch alles Zeichnen lassen, ja. Das ist aber deutlich schwieriger als einfache Layoutmanager zu verwenden.
Dein Problem ist einfach: Du verstehst nicht, was du da tust ;)

Du solltest schon einen Layoutmanager verwenden und dir überlegen, wie man sowas eventuell passend zusammenbekommt.
So kann man ein JPanel mit GridLayout wunderbar verwenden um die Karten darzustellen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
DrahtEck Warum bekomme ich ein "minus" ausgegeben Java Basics - Anfänger-Themen 2
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
M Was muss ich verändern damit ich es so ausgegeben bekomme wie auf dem Foto? Java Basics - Anfänger-Themen 2
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
Henri run und bekomme ich nichts Java Basics - Anfänger-Themen 12
D OOP Warum bekomme ich eine Null-Pointer Exception!!? :( Java Basics - Anfänger-Themen 4
A Wie bekomme ich zwei Strings in eine ArrayList Java Basics - Anfänger-Themen 4
U Wie bekomme ich bei der Ausgabe das erste Komma weg Java Basics - Anfänger-Themen 8
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
Thallius Wie bekomme ich den Country code Java Basics - Anfänger-Themen 4
T Klassen wie funktionieren Streams, warum bekomme ich int zurück? Java Basics - Anfänger-Themen 2
D Wie bekomme ich meine Ausgabe in Form von "2^x" hin? Java Basics - Anfänger-Themen 1
G Wie bekomme ich alle Ausgaben von runTime.exec() Java Basics - Anfänger-Themen 7
J Compiler-Fehler Warum bekomme ich fehler angezeigt?? Java Basics - Anfänger-Themen 3
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
X Ich bekomme die Java Communications Api nicht installiert Java Basics - Anfänger-Themen 9
S Bei double Methode bekomme ich Infinity Java Basics - Anfänger-Themen 2
El_Lobo Threads bekomme Thread nicht abgewürgt mit interrupted() Java Basics - Anfänger-Themen 3
W wie bekomme ich die .class Dateien ausgelesen Java Basics - Anfänger-Themen 11
sylo Bekomme Thread nicht gleichzeitig gestartet. Java Basics - Anfänger-Themen 12
N Reguläre Ausdrücke - bekomme Suchkriterium nicht hin Java Basics - Anfänger-Themen 3
radiac Wieso bekomme ich kein Bild drauf??? Java Basics - Anfänger-Themen 13
S regular expression - bekomme leerzeichen nicht raus Java Basics - Anfänger-Themen 3
T Mehr Anfänger geht nicht - Wie bekomme ich das zum laufen! Java Basics - Anfänger-Themen 6
G Woher bekomme ich passende .jar-Archive Java Basics - Anfänger-Themen 8
D Bekomme das nicht hin (set / get Methoden) Java Basics - Anfänger-Themen 22
F Wie bekomme ich mein "Fenster"? Java Basics - Anfänger-Themen 3
A Eine Javaaufgabe die ich nicht auf die Reihe bekomme. Java Basics - Anfänger-Themen 7
D bekomme Bild nicht eingefügt Java Basics - Anfänger-Themen 6
S Warum bekomme ich diese Exception ? Java Basics - Anfänger-Themen 3
J bekomme keine ausgabe! Java Basics - Anfänger-Themen 40
P wie bekomme ich ein array in eine string variable Java Basics - Anfänger-Themen 11
S Bekomme Keine Ausgabe Java Basics - Anfänger-Themen 9
T Bekomme es nicht hin Java Basics - Anfänger-Themen 10
T Bekomme Fehler mit Bubblesort Java Basics - Anfänger-Themen 2
E Wo bekomme ich das javax.swing.* package her? Java Basics - Anfänger-Themen 3
M Bekomme Programm nicht zum laufen HILFEEEE! Java Basics - Anfänger-Themen 28
L Bekomme ständig eine ArrayOutBoundsException Java Basics - Anfänger-Themen 4
G wie bekomme ich das javax.jws.* package in den JBuilder ? Java Basics - Anfänger-Themen 7
R Woher bekomme ich das aktuelle Jahr oder auch Datum? Java Basics - Anfänger-Themen 4
E Wie bekomme ich -Xmx512m in JAR-Datei Java Basics - Anfänger-Themen 13
E bekomme was vom Typ Object -> und nu? Java Basics - Anfänger-Themen 6
V Beim lesen aus einer Datei bekomme ich fehlerhafte Strings. Java Basics - Anfänger-Themen 2
H Warum bekomme ich einenen noclassdeffounderror ? [erledigt] Java Basics - Anfänger-Themen 7
P File Object, wie bekomme ich den Datei Typ Java Basics - Anfänger-Themen 6
M Wie bekomme ich einen Bild in einem JPaneln inden background Java Basics - Anfänger-Themen 3
I Wie bekomme ich diesen Fehler weg? Java Basics - Anfänger-Themen 5
megachucky Woher bekomme ich Java (außer aus dem netz) ? Java Basics - Anfänger-Themen 12
8 Wie bekomme ich einen Thread angehalten der blokiert ist? Java Basics - Anfänger-Themen 8
G Problem mit JPanel, bekomme keine Anzeige! Java Basics - Anfänger-Themen 4
S Wie bekomme ich absolute Werte (Betrag einer Zahl)? Java Basics - Anfänger-Themen 5
B 4 double Werte sind gegeben - wie bekomme ich den größten? Java Basics - Anfänger-Themen 8
S Bekomme Fehlermeldungen nicht weg ! :-| Java Basics - Anfänger-Themen 5
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
Lukasbsc Wie kann ich meinen Code optimieren? Java Basics - Anfänger-Themen 4
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
S Bewertet meinen Code - Part 1 Java Basics - Anfänger-Themen 8
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
E Input/Output Kann jemand meinen Code durchschauen? Java Basics - Anfänger-Themen 4
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
S OOP Sachen aus meinen getMethoden ausgeben lassen `??? Java Basics - Anfänger-Themen 3
E Input/Output Konsole erkennt meinen Buchstaben nicht Java Basics - Anfänger-Themen 12
H Input/Output ImageIO.load frisst meinen ganzen Speicher weg! Java Basics - Anfänger-Themen 4
I SwingUtilities.invokeLater - Wie verwenden für meinen Code? Java Basics - Anfänger-Themen 4
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
A Wie kann ich meinen Code verbessern? Java Basics - Anfänger-Themen 17
S Hilfe es frisst meinen RAM! Java Basics - Anfänger-Themen 5
V finde meinen Fehler nicht Java Basics - Anfänger-Themen 10
V Ganz kurze Java-Hilfe - Ich finde meinen Fehler nicht Java Basics - Anfänger-Themen 4
C Reference - wird gegen meinen Willen - auf null gesetzt Java Basics - Anfänger-Themen 2
J problem (kann meinen Code nicht kompilieren) Java Basics - Anfänger-Themen 3
C Finde meinen Fehler nicht Java Basics - Anfänger-Themen 6
C wie bekomm ich ein animiertes .gif bild in meinen JPanel Java Basics - Anfänger-Themen 2
G Wie finde ich das Verzeichnis von meinen Java Projekt? Java Basics - Anfänger-Themen 7
J Wie installiere ich die api index.html in meinen java editor Java Basics - Anfänger-Themen 4
B bitte mal meinen adressbuch-code checken Java Basics - Anfänger-Themen 14
R Finde meinen Fehler nicht! - Namen von Personen vergleichen Java Basics - Anfänger-Themen 6
P meine java applets laufen nicht bei meinen freunden Java Basics - Anfänger-Themen 5
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben