2
基本的に私は反転ゲームを作成しようとしています。まず、ボタンと属性IDが付いたボードを作成したので、必要に応じて後でアクセスすることができます。今私は各ボタンにゲームピースを描画しようとしていますが、私はそれが悪い考えであり、nullを返すので、ボタンのgetGraphics()はできません。ボード、セル、ピースは、MVCパターンを使って開発しているので、私はすべてのエンティティを別々にしておきたいと思います。JButtonの上に楕円を描く
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各ボタンに楕円形のコードを書き直すにはどうすればよいですか?
ありがとうございます。
@RMS:例えば、コンパイルして上記の私の[MCVE]コードを実行します。それはJLabelsを使用しているので、それは私にとってはよりきれいですが、JButtonも同様に機能します。 –
ありがとうございました。このようなアプローチは、私がやっていることよりも優れています。心から感謝する。 – Frisco