Pessoal, sou iniciante com games e estou tentando desenvolver o banco imobiliário e estou utilizando a classe Graphics e ImageIcon (acho que não é a maneira mais eficiente de se fazer, mas no momento a única que sei). Enfim, eu queria adicionar um JButton no lado direito inferior do meu JFrame mas por causa do método paint ele não deixa o botão aparecer.
Se puderem me dar uma força serei e tiverem materiais para me ajudar a melhorar serei muito grato!
Aqui onde o JFrame é setado
public class Main {
public static void main(String[] args) throws FileNotFoundException {
JFrame frame = new JFrame();
GamePlay gp = new GamePlay();
frame.setTitle("Banco imobiliario");
frame.setSize(1000,563);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.add(gp);
}
}
classe do JPanel
public class GamePlay extends JPanel implements ActionListener {
ArrayList<CasaTabuleiro> casas = new ArrayList<>();
IniciaCasaTabuleiro initCasaTabuleiro;
Tabuleiro tabuleiro = new Tabuleiro();
Jogador jogador = new Jogador();
Random random = new Random();
private int posSorteada;
boolean fimTurno = true;
public GamePlay() throws FileNotFoundException {
setFocusable(true);
setDoubleBuffered(true);
setFocusTraversalKeysEnabled(false);
this.setLayout(null);
setBotoes();
this.initCasaTabuleiro = new IniciaCasaTabuleiro();
casas = initCasaTabuleiro.getCasa();
Timer timer = new Timer(5, this);
timer.start();
}
public void setBotoes(){ // aqui onde supostamente era para ser setado o botão
JButton rolarDado = new JButton("Rolar dado");
rolarDado.setBounds(new Rectangle(900, 500, 95, 30));
this.add(rolarDado);
}
public void casaInformacao(){
casas.get(posSorteada).casaInfo(jogador);
}
public void calculaI(int dado1, int dado2){
posSorteada += dado1 + dado2;
if(posSorteada > 31)
posSorteada -= 32;
}
public void rolarDado(){
int dado1 = random.nextInt(6) + 1;
int dado2 = random.nextInt(6) + 1;
JOptionPane.showMessageDialog(null, "Dado 1: "+ dado1 + "\n"
+"Dado 2: "+ dado2);
calculaI(dado1, dado2);
}
@Override
public void paint(Graphics g) {
tabuleiro.getTabuleiro().paintIcon(this, g, 0, -9);
jogador.getJogador().paintIcon(this, g, jogador.getX(), jogador.getY());
if((jogador.getX() == casas.get(posSorteada).getX()) && (jogador.getY() == casas.get(posSorteada).getY()))
fimTurno = true;
else
jogador.mover();
g.dispose();
}
@Override
public void actionPerformed(ActionEvent ae) {
if(fimTurno){
casaInformacao();
rolarDado();
fimTurno = false;
}
repaint();
}
public void setPosSorteada(int posSorteada) {
this.posSorteada = posSorteada;
}
public void setFimTurno(boolean fimTurno) {
this.fimTurno = fimTurno;
}
}