Como utilizo o JButton de outro Jframe?

14 respostas
A

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?

14 Respostas

staroski

Descreva melhor seu problema, pois está confuso.
Quais as classes que você tem e como elas se relacionam?

Manasses_Eugenio

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

RenanRosa

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.

A

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);

A

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);

RenanRosa

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.

anthonio

Tem como me mostrar porfavor? Não to entendendo

anthonio

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); 	
		}
	});
RenanRosa

Agora fica mais facil.
Tente usar
btnMesa1.setOpaque(true)

Antes de setar a cor

anthonio

Não deu certo

RenanRosa

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);

anthonio

Vou passar o Button para a mesa. Vou dar notiçia

anthonio

Obrigado Cara, serio… deu certo. Tava in dificuldade.

RenanRosa

Sem problema

Criado 10 de maio de 2018
Ultima resposta 11 de mai. de 2018
Respostas 14
Participantes 5