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

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