Pessoal estou com um problema
Não é algo que me atrapalhe no desenvolvimento mas incomoda.
Estou criando um JFrame que contem o jogo em sí, porem ao pintar o conteúdo na janela, aparentemente o alinhamento no topo a esquerda, fica embaixo da borda da janela criada pelo windows.
Segue uma imagem de exemplo e código que constrói a janela.
https://www.dropbox.com/s/xii9zfly8xn2z8j/Captura%20de%20tela%202013-11-21%2012.39.23.png
http://pastebin.com/c1CKfuAv
Aparentemente, na sua função de desenho “render()” você está usando a janela do JFrame como base. O problema é que o tamanho da janela inclui as bordas da tela e a barra de títulos (onde está escrito “Jogo da Velha” e onde ficam os botões “Minimizar”, “Maximizar” e “Fechar”. Se você vai desenhar diretamente sobre o JFrame, precisa descontar o espaço usado por esses elementos. Esse espaço é determinado pelos Insets do seu JFrame, e você precisa adicioná-lo a seu desenho.
Veja aqui um exemplo de como pegar os insets. Aqui um post do GUJ que pode te ajudar.
Agora, sobre seu jogo, recomendo algumas alterações que poderão te facilitar e muito a vida:
- ao invés de desenhar diretamente num JFrame, crie uma classe que estenda um JPanel e desenhe sobre ela sobrescrevendo o método paintComponent(Graphics g);
- use Java 2D. Com isso, você ganha muito mais recursos, como antialias (deixa o desenho mais suave);
Há toneladas de exemplos de uso de Java2D, inclusive aqui no Guj e no Ponto V.
Abraço.
No Ponto V, isso está explicado na parte “O Frame”, desse artigo aqui:
http://pontov.com.br/site/index.php/java/48-java2d/107-o-fantasma-do-pacman
Mas, basicamente, é só incluir o seguinte código no seu render:
[code]
public void render() {
Graphics2D g = (Graphics2D) bufferStrategy.getDrawGraphics().create(
getInsets().left, getInsets().top,
getWidth() - getInsets().right, getHeight() - getInsets().bottom);
g.setColor(Color.BLACK)
g.fillRect(0, 0, getWidth(), getHeight());
onRender(g);
g.dispose();
bufferStrategy.show();
}[/code]
Agradeço a ajuda, vou implementar o código logo que chegar em casa e depois dou um feedback !!
Vlw mesmo, não tinha me dados conta do insets apesar de ter feito o exemplo do fantasma do pacman um certo tempo.