Pessoal comecei a fazer um jogo de damas, só q estou com dificuldade pra desenhar os componentes na tela, a lógica ja esta toda feita só tenho duvida na parte de jogar no Frame. Ai vai meu codigo:
packagegame;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.image.BufferedImage;importjava.nio.Buffer;importjavax.swing.JFrame;/** * Esse codigo cria o Frame e desenha os retangulos nele c/ o metodo criaretangulo()*/publicclassFrameextendsJFrame{privatefinalintsize=30,size2=15,sizep=12;privatefinalintlargura=size*8,altura=size*8;BufferedImageimagebuffer;Colorcor=newColor(255,250,250);privateintx=0,y=0;publicFrame(){super("Damas");this.setSize(largura,altura);this.setLayout(null);this.getContentPane().setBackground(cor);this.setVisible(true);Criaretangulo();this.setVisible(true);}publicvoidCriaretangulo(){// tam e tipo de cada retanguloimagebuffer=newBufferedImage(size,size,BufferedImage.TYPE_INT_RGB);// variavel de Graphics recebe o valor de imegebuffer, para desenhar em um espaço reservado de memóriaGraphicsgrafico=imagebuffer.createGraphics();// cor com a qual vai desenhargrafico.setColor(Color.GRAY);// desanhando retangulo preenchido de acordo c/ as posicoes x e y = 0grafico.fillRect(x,y,size,size);// desenha outro quadrado em outra posicao: x = 30; y = 30 (tamanho de size)grafico.setColor(Color.GRAY);grafico.fillRect(size,size,size,size);this.setVisible(true);}}
packagegame;publicclassPrincipal{/** * @param args * Classe Principal que chama o frame */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubFramefrm=newFrame();}}
Só que quando eu rodo não aparece nenhum quadrado no Frame. Se alguem souber me ajude. Obrigado.
packagegame;importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.geom.Rectangle2D;importjavax.swing.JPanel;publicclassTabuleiroextendsJPanel{inti,j;intsize=45;publicTabuleiro(){this.setBackground(Color.WHITE);this.setVisible(true);}protectedvoidpaintComponent(Graphicsg){super.paintComponent(g);Rectangle2D.Doubler;Graphics2Dg2=(Graphics2D)g.create();finalBasicStrokestroke=newBasicStroke(10.0f);// falta o formato aqui// Usando for pra desenhar em toda a mesa os quad. Pretosfor(i=2;i<6;i++)for(j=2;j<6;j++){g2.setColor(Color.BLACK);r=newRectangle2D.Double(i*2*size,j*2*size,size,size);g2.fill(r);// desenha a forma pintadar=newRectangle2D.Double(i*2*size+size,j*2*size+size,size,size);g2.fill(r);// desenha a forma pintada}g2.setStroke(stroke);// coloca borda no tabuleiro inteiro(dando errado aqui)g2.dispose();}}
Ao invés de usar o setStroke(), coloque um retângulo (Rectangle2D) de fundo e desenhe o tabuleiro sobre ele. Note que esse retângulo tem que ser maior que todos os outros retângulos juntos, senão não vai aparecer. Algo do tipo: