Olá a todos, estou desenvolvendo um sistema pra Restaurante e não consigo o seguinte:
Criei a mapa das mesas, cada mesa é um button, ao clickar vira vermelho e o jframe Mesa, mas ao finañizar venda não consigo mudar a cor do button que está na mapa atravez do jframe mesa. Alguem pode ajudar?
Descreva melhor seu problema, pois está confuso.
Quais as classes que você tem e como elas se relacionam?
vc pode criar um array de objetos do tipo JButton, e com isso colocar um evento ao botao ser clicado para mudar de cor ou qualquer outra coisa que vc queira
No JFrame de fechar conta você deve ter a referencia do outro JFRame ou do botão da mesa.
Quando clicar no fechar venda, passe o botão como referencia.
Criei um JFrame FrmVenda aonde tem o buttom btnmesas. Ao clickar , ele muda de cor e abre o Jframe FrmMesa . Quando fecho o FrmMesa chamo o button btnmesas do FrmVenda setando o background pra mudar de cor mas nada acontece.
Dentro do JFRAME MESA chamo o btn do FrmVenda
FrmVenda v = new FrmVenda();
V.btnmesas.setback(color.green);
Criei um JFrame FrmVenda aonde tem o buttom btnmesas. Ao clickar , ele muda de cor e abre o Jframe FrmMesa . Quando fecho o FrmMesa chamo o button btnmesas do FrmVenda setando o background pra mudar de cor mas nada acontece.
Dentro do JFRAME MESA chamo o btn do FrmVenda
FrmVenda v = new FrmVenda();
V.btnmesas.setback(color.green);
O problema é que você está instanciando um novo FRMVenda, e não usando a referencia do FrmVenda já aberto, por isso eu disse, passe a referencia do FrmVenda quando chama o frame de fechar conta.
Tem como me mostrar porfavor? Não to entendendo
Esse é o Button do JFRAME FRMVENDA
btnMesa1 = new JButton("");
btnMesa1.setBackground(Color.GREEN);
btnMesa1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
btnMesa1.setEnabled(false);
btnMesa1.setBackground(Color.RED);
FrmMesa1 m1 = new FrmMesa1(id, nome);
m1.setVisible(true);
}
});
AQUI é o button do JFRAME FRMMESA1.
NOTA(Se eu nao creo uma nova instancia do FRMVENDA não da pra chamar o btnMesa1)
ME AJUDA POR FAVOR
btnFinaliza.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
btnDin.setEnabled(true);
btnNovaComanda.setEnabled(false);
venda v = new venda();
v.setTotal_venda(totalMesa);
v.inserirTotale();
FrmVenda venda = new FrmVenda(0, "");
venda.btnMesa1.setBackground(Color.GREEN);
System.out.println("Totale atualizado!");
cupon.append(" -------------------------------------------------\n\r"+
" TOTAL R$ "+txtTotal.getText()+" \n\r"+
" --------------------------------------------------\n\r"+
"\n\r"+
"\n\r"
);
txtDinheiro.requestFocus();
txtDinheiro.setBackground(Color.YELLOW);
}
});
Agora fica mais facil.
Tente usar
btnMesa1.setOpaque(true)
Antes de setar a cor
Não deu certo
Espera ai, você está instanciando novamente o FrmVenda quando você vai fechar a venda ?
v.inserirTotale();
FrmVenda venda = new FrmVenda(0, ""); //está instanciando novamente ?
venda.btnMesa1.setBackground(Color.GREEN);
Você deve usar a referencia do FrmVenda que chamou a tela de fechamento da mesa.
Ou você trata um retorno no método que chama o FrmMesa (setVisible) ou você passa o botão como referencia:
FrmMesa1 m1 = new FrmMesa1(id, nome, btnMesa1);
E em vez de
FrmVenda venda = new FrmVenda(0, "");
venda.btnMesa1.setBackground(Color.GREEN);
você faz:
btnMesa1_PASSADO_POR_REFERENCIA.setBackground(Color.GREEN);
Vou passar o Button para a mesa. Vou dar notiçia
Obrigado Cara, serio… deu certo. Tava in dificuldade.
Sem problema