Also im Grunde versuche ich ein Reversi-Spiel zu erstellen. Zuerst habe ich ein Board erstellt, das mit Buttons und angehängten IDs gefüllt ist, damit ich später darauf zugreifen kann. Jetzt versuche ich, ein Spielstück auf jedem der Knöpfe zu zeichnen, aber ich kann Graphics() des Knopfes nicht bekommen, da ich lese, dass das eine schlechte Idee ist und null zurückgibt. Bedenken Sie, dass ich alle meine Entitäten getrennt halten möchte: das Board, die Zelle und das Stück, da ich dies mit dem MVC-Muster entwickle.Ein Oval oben auf JButton zeichnen
board.java
import java.awt.GridLayout;
import javax.swing.JPanel;
public class Board extends JPanel {
private static final int sizeOfBoard = 8;
public Board() {
int id =0;
setLayout(new GridLayout(sizeOfBoard,sizeOfBoard));
for (int i = 0; i < sizeOfBoard; i++) {
for (int j = 0; j < sizeOfBoard; j++) {
Cell cell = new Cell(id++);
Disk disk = new Disk();
cell.add(disk);
add(cell);
}
}
setSize(600,500);
setVisible(true);
}
cell.java
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.Painter;
public class Cell extends JButton{
private int id;
private boolean taken;
private String colour;
private Painter painter;
public Cell(int id){
this.id = id;
}
public int getId(){
return id;
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
}
}
disk.java
import java.awt.Graphics;
import javax.swing.JComponent;
public class Disk extends JComponent{
@Override
public void paintComponent (Graphics g) {
super.paintComponent(g);
g.drawOval(50,50,50,50);
}
}
TL; DR Wie soll ich meinen Code umschreiben, damit er auf jeder Taste ein Oval hat.
Vielen Dank im Voraus.
@RMS: zum Beispiel kompilieren und ausführen meinen [MCVE] Code oben. Es benutzt JLabels, da mir das sauberer erscheint, aber ein JButton würde genauso gut funktionieren. –
Vielen Dank. Diese Art von Ansatz sieht besser aus als alles, was ich gemacht habe. Schätze es wirklich. – Frisco