Como criar um tabuleiro de damas?

Qual a melhor forma de criar um tabuleiro de damas? como desenhar os quadrados de cada posição no JFrame? e tem como fazer isso sem usar JButtons, pois acho que iria ficar muito estranho 16 botões por todo o tabuleiro. Obg.

Nunca fiz em um JFrame. Fiz no console usando Matriz
:slight_smile:

Você pode usar Java2D, criar um JPanel personalizado e adicioná-lo num JFrame. Nesse JPanel personalizado, você pode desenhar os quadrados ou carregar uma imagem de um tabuleiro. Leia: http://www.pontov.com.br/site/index.php/java/48-java2d/97-pintando-no-java-2d . Uma vantagem é poder fazer o desenho do jogo todo (peças, placar, etc).

Outra opção é carregar a imagem de um tabuleiro num JLabel. Isso é mais simples que o método acima, mas será mais complicado quando você tentar adicionar os demais elementos (peças e afins).

Abraço.

Não estou conseguindo, olha a exception que está dando:

javax.imageio.IIOException: Can’t read input file!

Olha como fiz:

package br.paulo.damas.gui;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Canvas extends JFrame implements ActionListener {
	
	public void Canvas(){
		
		this.setTitle("Damas");
		this.setSize(640,480);
		this.setLocationRelativeTo(null);
		this.setLayout(null);
		
		this.setDefaultCloseOperation(3);
		this.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		
		
		
	}
	@Override
	public void paint(Graphics g) {
		String imgTabuleiro = "/br/paulo/damas/res/tabuleirosempeca.png";
		try {
			BufferedImage buffer = ImageIO.read(new File(imgTabuleiro));
			super.paintComponents(g);
			Graphics2D g2d = (Graphics2D) g.create();
			g2d.drawImage(buffer,500,500,buffer.getWidth(),buffer.getHeight(), this);
			g.dispose();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Não sei o que fiz de errado

Agora resolvi este erro mundano essa parte do código:

public void paint(Graphics g) {
		String imgTabuleiro = "/br/paulo/damas/res/tabuleirosempeca.png";
		try {
			BufferedImage buffer = ImageIO.read(getClass().getResource(imgTabuleiro));
			super.paintComponents(g);
			Graphics2D g2d = (Graphics2D) g.create();
			g2d.drawImage(buffer,500,500,buffer.getWidth(),buffer.getHeight(), this);
			g.dispose();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Só que quando abre o JFrame ele aparece sem imagem nenhuma ;/

Não carregue a imagem dentro do método paint. Faça isso no construtor da classe, e use a referência criada para desenhar dentro do JFrame. Algo como:

public class OutroFrame extends JFrame{
  private BufferedImage tabuleiro;

  public OutroFrame(){
    try {
      tabuleiro = ImageIO.read(getClass().getResource(imgTabuleiro));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @Override
  public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g.create();
    g2d.drawImage(tabuleiro,500,500,tabuleiro.getWidth(),tabuleiro.getHeight(), this);
    g2d.dispose();
  }
}

Outra coisa: quando ciar um JFrame, certifique-se de usar a thread do Swing.Isso costuma evitar vários problemas:

public static void main(String args[]){
  SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run(){
      new OutroFrame().setVisible(true);
    } 
  }
}

Abraço.

O 500, 500 é a posição no componente em que a imagem será desenhada. Tente alterar para 25, 25.

Já resolvi esse problema ae k. vlw