Nochmal ich/ Graphik wird nicht angezeigt ?

Status
Nicht offen für weitere Antworten.

bicpi

Mitglied
Habe folgende 2 Klassen im selben package:

Code:
public class GameBoard extends JPanel{	
	private String face = "img/card1.gif";
	private String back = "img/back.gif";	
	private Card card = new Card(face, back);

	private GridLayout grid = new GridLayout(3,1);;

	private Player player1 = new Player(1, "Hans");
	private Player player2 = new Player(2, "Fritz");
	
	public GameBoard(){
		setLayout(grid);
		
		add(player1);
		add(card);
		add(player2);
	}
}

public class Player extends JPanel{	
	private String face = "img/card1.gif";
	private String back = "img/back.gif";
	private Card card = new Card(face, back);
	
	public Player(int player_no, String player_name){
		add(card);
	}

Problem ist, dass die Graphik "card" nur im GameBoard-Panel angezeigt wird, im Player-Panel ist nichts zu sehen.
Kann ich die Panels überhaupt so verschachteln?
 

Wildcard

Top Contributor
Werden im Gameboard beliebig viele Card's gezeichnet, oder nur eine?
Wenn nur eine, würde ich sagen das du das Image in der Card Klasse falsch verwendest.
 

bicpi

Mitglied
Was könnte denn passieren, dass es in dem einen Fall angezeigt wird und im anderen nicht? Ich habe die Card zwar für meine eigenen Zwecke angepasst, aber grundsätzlich ist es aus einem Buch. Hier die Klasse (auf das notwendige gekürzt - ich hoffe, die Listener und Zustandvariablen haben nichts damit zu tun...):

Code:
public class Card extends JComponent{
	private Image face;
	private Image back;
	private String faceFile;
	private String backFile;
	
	public Card(String faceFile, String backFile){
		this.faceFile = faceFile;
		this.backFile = backFile;
		face = getToolkit().getImage(faceFile);
		back = getToolkit().getImage(backFile);
	}
	
	public synchronized void paint(Graphics g){
		// super.paint(g);
		if(turned)
		{
			g.drawImage(face, 0, 0, this);
			System.out.println("Karte ist aufgedeckt !");
		}
		else{
			g.drawImage(back, 0, 0, this);
			System.out.println("Karte ist zugedeckt");
		}
}
 

Wildcard

Top Contributor
Dachte ich mir fast!
Du erzeugst nur ein Image, und das kann auch nur einmal gezeichnet werden.
Benutz das hier:
Code:
face = getToolkit().createImage(faceFile);
 

bicpi

Mitglied
Ich hab das so ausgebessert, geht aber immer noch nicht. Die Karte lässt sich auf dem "GameBoard" nur 1x zeichnen und vom "Player" aus gar nicht, auch wenn ich es insgesamt auf nur eine Ausgabe beschränke..
 

bicpi

Mitglied
Da geisterte noch einiges rum aber ich habe nun alles kommentiert, nur noch die Karte da... aber immer noch nichts...

Bei folgendem Minimalversuch klappt es auch nur, wenn die Zeile "setLayout" auskommentiert ist, was mich schon verwundert, das muss doch auch ohne LayoutManager gehen, oder? Das JLabel erscheint so oder so.

Code:
public class GameBoard extends JPanel{
	private GridLayout grid;
	
	private String face = "img/card1.gif";
	private String back = "img/back.gif";
	private Card card = new Card(face, back);
	
	public GameBoard(){
		this.setBackground(Color.white);
		grid = new GridLayout(2,1,10,10);
		//setLayout(grid);
		
		add(new JLabel("HUHU"));
		add(card);
	}
}


Viele Grüße,
Philipp
 

Wildcard

Top Contributor
Überschreib mal bei deinen Cards die getPreferredSize() Methode und gib eine feste Größe zurück.
Wenn das dann klappt Gib die Bildgröße zurück. Wenn gar kein Layout verwendest (auch kein Default)
musst du vermutlich die Größe "von Hand setzen"
 

bicpi

Mitglied
Wie genau meinst Du das, mit get/setPrefferedSize bin ich noch gar nicht vertraut? Muss ich nur diese leere Methode in Cards aufrufen? Und dann mit set eine Größe setzten?
 

Wildcard

Top Contributor
Mit Panels in denen keine anderen Components enthalten sind, also nur gezeichnet wird, ist die Größe
etwas problematisch. layoutmanager bestimmen die Größe der Components über deren
getPreferredSize() methode. In deinem Fall liefert die (0,0) zurück.
Wenn du sie überschreibst und beispielsweise
Code:
new Dimension(100,100)
zurücklieferst, bekommt die Component diese Größe vom LayoutManager zugewiesen.
Wenn du gar keinen verwendest(ihn also explizit auf null setzt)
musst du glaub ich aber mit setSize() arbeiten. Versuch besser mal beides.
 

bicpi

Mitglied
JAAAAA, Hurra !
Habe ein
Code:
card.setPreferredSize(new Dimension(100,178));
vor das "add" gesetzt, nun kann ich sie sooft zeichnen wie ich will ! Warums nun auf dem GameBoard ohne das funktioniert, wird mir wohl ein Rätsel bleiben, aber auf jeden Fall danke ich euch ganz ganz herzlich, wart eine große Hilfe und endlich kanns weitergehen :)

Viele Grüße, Phil
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
E nochmal synchronisierte Methoden Java Basics - Anfänger-Themen 5
J Hinzufügen eines Objekts in eine Liste, um später dann nochmal auf das Objekt zugreifen zu können Java Basics - Anfänger-Themen 8
B Unique ID nochmal Unique machen Java Basics - Anfänger-Themen 20
X Wenn Exception dann nochmal try. Java Basics - Anfänger-Themen 7
R Nochmal Quaxli Spieletutorial ;) Java Basics - Anfänger-Themen 9
V Nochmal Hilfe - Replace Methode Java Basics - Anfänger-Themen 2
T Override klappt nochmal wie? Java Basics - Anfänger-Themen 3
Haubitze_Broese Methode am ende nochmal startet? Java Basics - Anfänger-Themen 8
D Ausgabe sauber formatieren *bitte nochmal reinschaun* Java Basics - Anfänger-Themen 7
D C0 und C1 Test nochmal Java Basics - Anfänger-Themen 9
B könnte nochmal jemand über mein Projekt schauen? Java Basics - Anfänger-Themen 4
C Nochmal zu lokale Einstellungen Java Basics - Anfänger-Themen 2
G nach Thread.start(); nochmal start(); aufrufen geht nicht Java Basics - Anfänger-Themen 4
S Fehler durch Exception beheben und nochmal versuchen Java Basics - Anfänger-Themen 4
U Nochmal was zum Date(); Java Basics - Anfänger-Themen 23
F nochmal Array Declaration Java Basics - Anfänger-Themen 2
G Nochmal vereinfacht - hoffe mer kanns nachvollziehen Java Basics - Anfänger-Themen 9
F Referenz Pointer oder doch nochmal neu suchen ? Java Basics - Anfänger-Themen 2
G Nochmal zweidimensionaler Vector Java Basics - Anfänger-Themen 10
ven000m Char einlesen, wie ging das nochmal? Java Basics - Anfänger-Themen 9
D Nochmal zu den dummen Eingaben über Tastatur Java Basics - Anfänger-Themen 15
G Nochmal Problem mit Kommunikation zwischen Klassen Java Basics - Anfänger-Themen 3
B nochmal ich / jdk1.5 Java Basics - Anfänger-Themen 5
S nochmal Taschenrechner ;) Java Basics - Anfänger-Themen 16
B Nochmal NoClassDefFoundError Java Basics - Anfänger-Themen 3
megachucky nochmal JDBC. komme nicht weiter. Java Basics - Anfänger-Themen 4
K nochmal Jtable Java Basics - Anfänger-Themen 5
L "Graphik" JPanels übereinander legen Java Basics - Anfänger-Themen 5
K Warum wird meine Graphik zwei Mal gezeichnet ? Java Basics - Anfänger-Themen 12
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
el_pato DialogFenster wird nicht in Schleife geöffnet? Java Basics - Anfänger-Themen 30
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
F Session wird mehrfach erzeugt Java Basics - Anfänger-Themen 11
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
L JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 10
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
krgewb Long wird gerundet Java Basics - Anfänger-Themen 2
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
H GridPane wird nicht angezeigt Java Basics - Anfänger-Themen 0
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
H Endkapital wird nicht korrekt ausgegeben. Java Basics - Anfänger-Themen 5
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben