Spielfeld mit paintComponent oder doch lieber anders?

Status
Nicht offen für weitere Antworten.
Y

yilamazz

Gast
Hi!

Ich bin leider noch ein ziemlicher Anfänger in Sachen Java und suche zur Zeit eine Möglichkeit, ein Dame Spielbrett + Steine zu zeichnen. Die ganze Sache ist mit Konsolenausgabe kein Problem. Allerdings hab ich noch keine Ahnung, wie man die Sache Grafisch am besten lösen kann.
Ich wollte es so handhaben, dass die Spieloptionen usw. über eine JMenuBar verfügbar sind und darunter das Spielfeld mit den Steinen. Diese sollte man dann natürlich mit der Maus bewegen können. Also Stein anklicken -> Zielfeld anklicken und dann dementsprechend wird der Zug erlaubt und das Spielbrett aktualisiert oder eine Fehlermeldung wird ausgegeben. Die Steine selbst sollen mit Grafiken dargstellt werden, einzelnen Felder des Spielbretts sollen evtl. auch auf einer Grafik basieren.
Wäre für jeden Vorschlag dankbar, wie man das ganze am besten realisiert (JPanel, paintComponent ?) - und falls jemand ein Tutorial oder ähnliches zu so einer Spielbrett/Swing Thematik hat wäre das natürlich auch super. Ein einfacher Code mit vllt 3x3 Kästchen oder sowas würde mir auch schon weiterhelfen. :)

MfG
 
G

Guest

Gast
Ich habe verschiedene Ideen:

-Ein GridLayout wo dann als Felder JLabel eingefügt werden, die Steine können dort als ImageIcons hinzugefügt werden, mit einem ActionListener kann man Mausclicks auf den Labels abfangen und so reagieren. Einfach, aber geht das wirklich?

-In der paintComponent-Methode werden die Felder auf das Spielfeld gezeichnet (Graphics.drawRect(), drawOval() usw.) dann wird mouseClicked() auf dem Spielfeld (JPanel) abgefangen, anhand der Koordinaten abgefragt wauf welches Feld geklickt wurde usw. eventuell muss hierbei zunächst in ein BufferedImage gezeichnet werden und dieses dann auf das Spielfeld um flackern zu vermeiden->ausprobieren, eigene Objekte für Felder, Spielfiguren bieten sich an

Probier mal aus womit du am besten klar kommst, bei konkreten Problemen kannst du fragen.

Falls du das brauchst finden sich mit Sicherheit Erklärungen zu den Methoden des Graphics-Object in der Insel oder im javabuch unter www.java-forum.org/de/javabuch und http://www.galileocomputing.de/openbook/javainsel5/

auch wenn nicht eingeloggt,
campino
 
Y

yilamazz

Gast
Danke für die Antwort!
Habs jetzt mal mit der zweiten Methode angefangen und hänge leider.

Habe zwei Klassen, einmal ein Spielfenster und ein Spielfeld jeweils mit Tablelayout.
Das Spielfenster beinhaltet nun eine JMenuBar, dann ein Spielfeld und darunter noch ein Ausgabebereich für die Konsolenausgabe.
Das Spielfeld ist wie folgt in das Spielfenster hinzugefügt:

Code:
getContentPane().add(new Spielfeld().gibSpielfeld(),"1,1,3,1");

gibSpielfeld() ist eine Methode in der Klasse Spielfeld und gibt einfach das Spielfeld zurück.
Nun sind in der Klasse Spielfeld die Methoden paint() und paintComponent() überschrieben worden, aber wenn ich das Ganze ausführe, werden diese überschriebenen Methoden leider nicht aufgerufen. Hab einfach ne Textausgabe und nen Rechteck in der paintComponent() drin gehabt um zu sehen ob es funktioniert, aber er gibt nichts aus. Alle anderen Bestandteile der GUI, also JMenuBar und Konsolenausgabe funktionieren problemlos.

Hat jemand einen Tipp für mich woran es liegen könnte?

Auch gerne als email an yilmazz@livemy.de

MfG
 

Lim_Dul

Top Contributor
Was soll das "1,1,3,1" da?

Der zweite Paramater von add sind die Constraints für den LayoutManager. Bei einem JFrame ist auf der contentPane standardmässig ein BorderLayout - und das kann mit 1,1,3,1 nichts anfangen. Mach da mal ein BorderLayout.CENTER hin.
 
R

Roar

Gast
Lim_Dul hat gesagt.:
Was soll das "1,1,3,1" da?

Der zweite Paramater von add sind die Constraints für den LayoutManager. Bei einem JFrame ist auf der contentPane standardmässig ein BorderLayout - und das kann mit 1,1,3,1 nichts anfangen. Mach da mal ein BorderLayout.CENTER hin.
er wird wohl tablelayout, den besten layoutmanager den es gibt, benutzen *stänker* :bae:
 
Y

yilamazz

Gast
Sollte meinen Text vielleicht besser strukturieren. ;)

Also hier mal der Anfang der Klasse Spielfeld:

Code:
public class Spielfeld extends JComponent {

	
	JPanel spielfeld;
	
	protected Spielfeld()
	{
		spielfeld = new JPanel();
		
		double size[][] = {{100,100},
						   {100,100}};
		
		setLayout(new TableLayout(size));
		
		spielfeld.setOpaque(true);
		
		spielfeld.addMouseListener(new meinListener());
		
		spielfeld.setBackground(Color.BLACK);
		
		spielfeld.setSize(300,300);
		spielfeld.repaint();
	}
	
	public JPanel gibSpielfeld()
	{
		return spielfeld;
	}

Und dann hier nochmal die Implementierung in der Klasse Spielfenster:

Code:
public class SpielFenster extends JFrame implements Runnable
{

	/**
	 * @param args
	 */
	JFrame spielFenster;


	JTextArea ausgabeText;
	JTextField eingabe;
	JLabel würfellabel;

	
	protected SpielFenster()
	{		
		spielFenster = new JFrame();	
		
		//Columns und Rows festlegen
		double[][] size = {{2,200,200,50,2},
				           {2,400,100,TableLayout.PREFERRED,2}};
		//Layoutmanager bestimmen
		getContentPane().setLayout(new TableLayout(size));
		
		getContentPane().add(new Spielfeld().gibSpielfeld(),"1,1,3,1");

Es handelt sich jeweils um den Anfang der beiden Klassen, in der Klasse Spielfeld sind wie gesagt noch die Methoden paint () und paintComponent() überschrieben. Und diese beiden Methoden werden halt leider nicht ausgeführt. Bis auf das Spielfeld selbst wird alles richtig dargestellt.. aber das Spielfeld ist ja leider kein unwesentlicher Teil. :(
Bin für jede Hilfe dankbar!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H LayoutManager RPG Programmieren, eigenes Spielfeld grafisch generieren aus Tileset AWT, Swing, JavaFX & SWT 18
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
Viktim Array Spielfeld wird in GUI gedreht AWT, Swing, JavaFX & SWT 5
D Swing Spielfeld drehen von Pentago endet in einer Katastrophe AWT, Swing, JavaFX & SWT 2
P Spielfeld AWT, Swing, JavaFX & SWT 2
C Swing Info-Ebene überdeckt Spielfeld-Ebene komplett AWT, Swing, JavaFX & SWT 5
S Spielfeld mit unförmigen Objekten anklickbar machen? AWT, Swing, JavaFX & SWT 4
C Spielfeld Gitter - Einzelne Zellen verändern AWT, Swing, JavaFX & SWT 18
T Spielfeld erstellen AWT, Swing, JavaFX & SWT 15
J Ansicht wechseln zw. Spielfeld und Optionen AWT, Swing, JavaFX & SWT 3
C Spielfeld Editor AWT, Swing, JavaFX & SWT 4
B Ein Spielfeld zeichnen AWT, Swing, JavaFX & SWT 7
G Spielfeld für ein Spiel erstellen, wie am besten? AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
H new Operator in paintComponent - Speicherprobleme vorprogrammiert? AWT, Swing, JavaFX & SWT 2
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
G update, paintComponent AWT, Swing, JavaFX & SWT 1
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
L Swing repaint() ruft paintComponent(g1d) nicht auf AWT, Swing, JavaFX & SWT 12
C Objekt an paintComponent weitergeben AWT, Swing, JavaFX & SWT 1
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
D PaintComponent wird nicht aufgerufen AWT, Swing, JavaFX & SWT 3
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
K Swing paintComponent, JPanel auslagern, ChangeEvents AWT, Swing, JavaFX & SWT 7
B Zeichnen mit paintComponent? Oder anders? AWT, Swing, JavaFX & SWT 15
B AWT paintComponent wird nur 2 mal ausgeführt?! AWT, Swing, JavaFX & SWT 5
P Paint und paintComponent AWT, Swing, JavaFX & SWT 12
D paintComponent() mit transparentem Hintergrund. AWT, Swing, JavaFX & SWT 0
G Swing Flackern nach Override von paintComponent() AWT, Swing, JavaFX & SWT 3
M Swing paintComponent in rekusivem JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 2
M DefaultTableModel ruft paintComponent auf ! AWT, Swing, JavaFX & SWT 4
T Swing paintComponent(); AWT, Swing, JavaFX & SWT 24
K Swing JButton paintComponent überschreiben AWT, Swing, JavaFX & SWT 5
Kenan89 2D-Grafik paintComponent quetsch alles in Panel AWT, Swing, JavaFX & SWT 26
B 2D-Grafik paintComponent für rechteckigen Bereich? AWT, Swing, JavaFX & SWT 6
P Swing problem mit paintComponent AWT, Swing, JavaFX & SWT 2
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
K paintComponent nicht aufgerufen AWT, Swing, JavaFX & SWT 2
J Mal wieder Probleme mit paintComponent AWT, Swing, JavaFX & SWT 3
L Swing 64bit Problem mit paint/paintComponent AWT, Swing, JavaFX & SWT 7
S auf paintComponent() warten AWT, Swing, JavaFX & SWT 34
W JPanel Überschreiben // paintComponent? AWT, Swing, JavaFX & SWT 4
propra Wieso wird paintComponent() beim Start 2 malausgeführt? AWT, Swing, JavaFX & SWT 4
T BufferedImage bei paintComponent AWT, Swing, JavaFX & SWT 6
P JLabel paintComponent AWT, Swing, JavaFX & SWT 3
Z Swing paintcomponent und menbar Problem AWT, Swing, JavaFX & SWT 3
S Image wird nicht (immer) in paintComponent gezeichnet? AWT, Swing, JavaFX & SWT 6
R 2D-Grafik auf JPanel zeichen - ohne @Override paintComponent AWT, Swing, JavaFX & SWT 6
A Probleme mit paintComponent & BorderFactory AWT, Swing, JavaFX & SWT 2
A paintComponent AWT, Swing, JavaFX & SWT 4
T Rechtecke zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 3
R paintComponent direkt bei actionPerformed aufrufen AWT, Swing, JavaFX & SWT 2
P Swing Vom BufferedImage bei paintComponent nur soviel zeichnen, wie nötig AWT, Swing, JavaFX & SWT 3
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
A paintComponent() - Animation AWT, Swing, JavaFX & SWT 2
K JPanel und paintComponent AWT, Swing, JavaFX & SWT 8
E 2D-Grafik Zeichnen außerhalb der "paintComponent"-Methode? AWT, Swing, JavaFX & SWT 5
C Checkbox in Liste deaktivieren und paintComponent explizit aufrufen AWT, Swing, JavaFX & SWT 12
C Performance-Problem beim Überschreiben von paintComponent() AWT, Swing, JavaFX & SWT 2
P 2D-Grafik PaintComponent() übernimmt keine Werte aus update() AWT, Swing, JavaFX & SWT 8
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Game of Life - PaintComponent-Problem / Timer? AWT, Swing, JavaFX & SWT 8
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
J paintComponent() übergeben AWT, Swing, JavaFX & SWT 4
N paintComponent für Graphics ansprechen AWT, Swing, JavaFX & SWT 2
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
kodela Swing paintComponent() wird nicht aufgerufen AWT, Swing, JavaFX & SWT 19
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
E WARUM wird paintComponent nicht aufgerufen? AWT, Swing, JavaFX & SWT 12
C paintComponent mit Maus verschieben - wie? AWT, Swing, JavaFX & SWT 2
G Swing paintComponent Effizienz? AWT, Swing, JavaFX & SWT 4
R paintComponent Kollision AWT, Swing, JavaFX & SWT 2
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
A Probleme mit paintComponent() AWT, Swing, JavaFX & SWT 2
T Swing paintComponent problem AWT, Swing, JavaFX & SWT 3
MrGe getWidth(); getHeight(); außerhalb von paintComponent AWT, Swing, JavaFX & SWT 4
A paintComponent überdeckt ... AWT, Swing, JavaFX & SWT 13
JFeel-x repaint für Aufruf von paintComponent-Klasse ungeeignet? AWT, Swing, JavaFX & SWT 11
F Wer ruft paintComponent() Methode auf? AWT, Swing, JavaFX & SWT 9
@ JPanel: kein paintComponent() trotz repaint() AWT, Swing, JavaFX & SWT 4
G paintComponent Problem AWT, Swing, JavaFX & SWT 6
T paintComponent() überschreiben: Platz für Border freihalten? AWT, Swing, JavaFX & SWT 6
G paintComponent JPanel im JApplet AWT, Swing, JavaFX & SWT 2
X Speichern in der paintComponent() Methode AWT, Swing, JavaFX & SWT 15
W JLabel + paintComponent AWT, Swing, JavaFX & SWT 2
V Wieviel Logik in paintComponent? AWT, Swing, JavaFX & SWT 7
hdi super.paintComponent(g); soll nicht alles löschen AWT, Swing, JavaFX & SWT 2
G paintComponent() Methode für JPanel in NetBeans überschreibe AWT, Swing, JavaFX & SWT 2
L Problem mit paintComponent() under java < 1.6 under Windo AWT, Swing, JavaFX & SWT 3
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
N Probleme mit paintComponent und GradientPaint AWT, Swing, JavaFX & SWT 5
B JPanel#paintComponent(Graphics g) << flackert oO AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben