Hej erstmal,
ich bin ein ziemlicher Neuling in Java, beschäftige mich jetzt etwa ein dreiviertel Jahr mit dem Thema und wollte mich jetzt an was grafisches wagen. Ich wollte einfach so mal zum Jux ein einfaches memory-Spiel schreiben.
Dabei ist es so, dass ich ein JPanel CardPanel habe, in dem die Karten angezeigt werden sollen. Die karten sind jeweils JComponent und sind alle Objekte von der JComponent Card. Um erstmal ein Gefühl für componentsPaint() zu bekommen, hatte ich diese Funktion erst im CardPanel implementiert. Es wurde mir auch eine wunderschöne Karte angezeigt. Dann dachte ich mir, ok, toll es klappt, schreiben wir mal eine Klasse Card, die Karten erzeugt. das heißt, exakt die gleiche Methode steht nun in Card. In CardPanel werden nun 16 Karten (4x4) erzeugt. Interessanterweise krieg ich keine einzige Karte zu sehen.
Hat irgendwer vllt Ahnung woran das liegt? ???:L ???:L ???:L
Hier die Klasse CardPanel:
Und hier die Klasse Card:
Vielen Dank im voraus^^
ich bin ein ziemlicher Neuling in Java, beschäftige mich jetzt etwa ein dreiviertel Jahr mit dem Thema und wollte mich jetzt an was grafisches wagen. Ich wollte einfach so mal zum Jux ein einfaches memory-Spiel schreiben.
Dabei ist es so, dass ich ein JPanel CardPanel habe, in dem die Karten angezeigt werden sollen. Die karten sind jeweils JComponent und sind alle Objekte von der JComponent Card. Um erstmal ein Gefühl für componentsPaint() zu bekommen, hatte ich diese Funktion erst im CardPanel implementiert. Es wurde mir auch eine wunderschöne Karte angezeigt. Dann dachte ich mir, ok, toll es klappt, schreiben wir mal eine Klasse Card, die Karten erzeugt. das heißt, exakt die gleiche Methode steht nun in Card. In CardPanel werden nun 16 Karten (4x4) erzeugt. Interessanterweise krieg ich keine einzige Karte zu sehen.
Hat irgendwer vllt Ahnung woran das liegt? ???:L ???:L ???:L
Hier die Klasse CardPanel:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* Ein Panel, das die Karten erzeugt mit Ihren Eigenschaftn.
*/
public class CardPanel extends JPanel {
/*
* Ein Konstruktor für CardPanel
*/
public CardPanel() {
System.out.println(" Konstruktion des CardPanel...");
this.setLayout(new FlowLayout());
this.createCards();
System.out.println(" Konstruktion des CardPanel: Status = fertig...");
}
void createCards() {
Card[][] cards = new Card[4][4];
int posY = 5;
for (int i= 0; i<4; i++) {
int posX = 5;
for (int j = 0; j < 4; j++) {
cards[i][j] = new Card(posX, posY);
this.add(cards[i][j]);
posX += 105;
}
posY += 105;
}
}
/*
* der ehemalige paint-aufruf, mit dem es auch wunderbar klappt..
*/
/*
protected void paintComponent(Graphics card) {
card.setColor(Color.CYAN);
card.drawRoundRect(10, 50, 50, 50, 5, 5);
card.fillRoundRect(10, 50, 50, 50, 5, 5);
}
*/
}
Und hier die Klasse Card:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* Hier werden die Karten erzeugt
*/
public class Card extends JComponent {
int posX = 0;
int posY = 0;
int length = 100;
/*
* Konstruktor für Card, der diepositionen und die länge sowie farbe
* als parameter erwartet
*/
public Card(int posX, int posY, int length/*, Color color*/) {
System.out.println(" Konstruktion eines Objekts von Card...");
this.posX = posX;
this.posY = posY;
this.length = length;
System.out.println(" Konstruktion eines Objekts von Card: Status = fertig...");
}
/*
* Konstruktor für Card, der die positionen usowie farbe
* als parameter erwartet, länge ist standardmäßig auf 100
*/
public Card(int posX, int posY/*, Color color*/) {
System.out.println(" Konstruktion eines Objekts von Card...");
this.posX = posX;
this.posY = posY;
System.out.println(" Konstruktion eines Objekts von Card: Status = fertig...");
}
/*
* Hier wird eine Memorykarte gezeichnet
*/
@Override
protected void paintComponent(Graphics card/*, Color color*/) {
card.setColor(Color.BLACK);
card.drawRoundRect(posX, posY, length, length, 5, 5);
card.fillRoundRect(posX, posY, length, length, 5, 5);
}
}
Vielen Dank im voraus^^