Atualizar JFrame

6 respostas
R

Preciso de ajuda:Tenho um JFrame e ela está um JContentPane composto de muitos jButtons(Mesas de um restaurante) que tem cores diferentes para cada estado.Ao clicar na mesa abre uma nova janela(JFrame).Eu altero o estado dessa mesa,altero o status no BD,mas a cor da mesa não muda em tempo de execução.Já tentei várias opçoes(repaint() e nada.Agradeço desde já se puderem me ajudar…

6 Respostas

R

Vou colocar o código para esclarecer melhor :

package Visao;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;
import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JFrame;
import Controle.ControlaCores;

import Controle.ControleTelaContaAtual;

import Controle.ControleTelaFuncionario;

import Dao.DaoConta;

import Dao.DaoPraca;

import Modelo.Conta;

import Modelo.Mesa;

import Modelo.Praca;
import javax.swing.JInternalFrame;

import java.awt.Dimension;

import java.util.ArrayList;

public class TelaMesaPrincipal extends JFrame implements ActionListener {

private ControlaCores controlaCores ;  //  @jve:decl-index=0:
private JPanel buttonJPanel; 
private JPanel buttonJPanel2;// panel to hold buttons
private JButton[] buttons; // array of buttons
private ArrayList<Mesa> arrayMesa;
private DaoPraca daoPraca;  //  @jve:decl-index=0:
private Mesa mesa;
private ControleTelaContaAtual controle13;

public TelaMesaPrincipal(){
	super("Mesas");
	initialize();
	criarBotoes();
	
}	
private  void initialize(){
	 this.setExtendedState(Frame.MAXIMIZED_BOTH);		
	 this.add(getJContentPane(),BorderLayout.CENTER);
	 this.add(getJContentPane2(),BorderLayout.SOUTH );
	
}
private JPanel getJContentPane() {
	if (buttonJPanel == null) {
		buttonJPanel = new JPanel();; 
		buttonJPanel.setLayout( new GridLayout( 8,9,5,5 ) );
		arrayMesa= new ArrayList<Mesa>();
		mesa = new Mesa();
		daoPraca=new DaoPraca();
		arrayMesa=daoPraca.getArrayMesa();
		buttons = new JButton[ arrayMesa.size() ];
	    controlaCores = new ControlaCores();
	    int[]cores = controlaCores.Cores();
	    buttonJPanel.setBackground(new Color(cores[0],cores[1],cores[2]));
        
	}
	
	return   buttonJPanel; 
}

private JPanel getJContentPane2() {
	if (buttonJPanel2 == null) {
		buttonJPanel2 = new JPanel();// set up panel			
	    buttonJPanel2.setBackground(new Color(255,255,255));	       
		buttonJPanel2.setLayout( new GridLayout( 1,1,1,1 ));
		Font fonteLabel = new Font("Serif", Font.BOLD, 17);	
		JLabel label = new JLabel("DISPONÍVEL:");	      
		JLabel label2 = new JLabel("ABERTA:");
		JLabel label3 = new JLabel("AGUARDANDO PAGAMENTO:");
		JLabel label4 = new JLabel("RESERVADA:");
	    label.setFont(fonteLabel);
	    label2.setFont(fonteLabel);
	    label3.setFont(fonteLabel);
	    label4.setFont(fonteLabel);		      
	    label.setForeground(new Color (96,191,200));	      
            label2.setForeground(new Color (20,190,1));
	    label3.setForeground(new Color(255,130,1));
	    label4.setForeground(Color.red);  
	  
	    buttonJPanel2.add(label);
	    buttonJPanel2.add(label2);
	    buttonJPanel2.add(label4);
	    buttonJPanel2.add(label3);
	   
		
		
	}
	return buttonJPanel2;
}
	
   
 
	
  

	

public void actionPerformed(ActionEvent ev){
	String comando = ev.getActionCommand();
	TelaContaAtual telaContaAtual = new TelaContaAtual(Integer.parseInt(comando),this);
	telaContaAtual.setVisible(true);		
			
	
}
public void atualizarImagem() {
	buttonJPanel.removeAll();
	//buttonJPanel.revalidate();
	buttonJPanel.repaint();
	criarBotoes();
	//buttonJPanel.revalidate();
	buttonJPanel.repaint();
   
   //buttonJPanel.revalidate();
   //buttonJPanel.repaint(); 
	 
}
public void criarBotoes(){
	Font fonte = new Font("Arial Black", Font.BOLD, 45);   
   	
	// create and add buttons
	for ( int count = 0; count < buttons.length; count++ ){
		
		mesa = arrayMesa.get(count);  
	    buttons[ count ] = new JButton( ""+(mesa.getNumero()));
	    buttons[count].setFont(fonte);
	    buttons[ count ].setPreferredSize(new Dimension(50, 50));
	    buttons[count].addActionListener(this);
	    buttonJPanel.add( buttons[ count ] );
	    DaoConta daoConta = new DaoConta();
	    Conta conta=new Conta();
	    ArrayList<Conta>arrayConta = new ArrayList<Conta>();
		arrayConta = daoConta.listarConta(mesa.getNumero());
		
		
		
		String tip="";
	    if(arrayConta!=null)				
			for(int a=0;a<arrayConta.size();a++){				
			    conta=(Conta) arrayConta.get(a);	
			   
			    if(conta.getCardapio().getGrupo().getPrecoVenda()==0){
			    	tip=tip+(conta.getCardapio().getItensAdicionais().getNome()+" - "+conta.getQuantidade()+" - \n");
			    }else{
			    	tip=tip+(conta.getCardapio().getGrupo().getNomeGrupo()+" -"+ String.valueOf(conta.getQuantidade()+" - \n"));
			    }
			}
	    buttons[count].setToolTipText(tip);
	   
	    // add button to panel
 	   if(mesa.getStatus().equals("Aberta")){
	    	buttons[count].setBackground(new Color (20,190,1));
	    
 	   }else if( mesa.getStatus().equals("Aguardando")){
	    	buttons[count].setBackground(new Color(255,160,1));
 	   
	    }else if( mesa.getStatus().equals("Reservada")){
	    	buttons[count].setBackground(Color.red);
	    }
	    	 
 	  
	    
	} // end for

}

}

Qualquer desses JButton chama outra JFrame,para onde eu passei esta JFrame como parâmetro e na outra frame chamo o método
criarBotões(),mas o status (cor) não muda,mesmo tendo sido alterado no banco.
>

ViniGodoy

Por favor, ao postar códigos, siga essas dicas:
http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Tente editar seu tópico aqui de cima e corrigi-lo.

ViniGodoy

Você não tem que chamar o método criaBotoes(). Ele irá criar botões novos, não inseridos no JFrame.

Você deve alterar os botões já existentes. Crie um método atualizaBotoes() para isso, sem chamar dentro dele o “new”.

R

Boa dica.Estamos no caminho certo.Apenas um 'detalhe'.Ao passar o objeto 'mesa' como parâmetro para o
método atualizarImagem(Mesa mesa) , o numero da mesa(mesa.getNumero()) ,não é o mesmo do array de
botoes(button[mesa.getNumero()).Mudar a cor de outro botão.
Enfim preciso passar o indice do botao que foi clicado e aberta a nova tela.E ainda não consegui pegar esse índice.
Codigo da tela de mesas:

package Visao;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;

import Controle.ControlaCores;
import Controle.ControleTelaContaAtual;
import Controle.ControleTelaFuncionario;
import Dao.DaoConta;
import Dao.DaoPraca;
import Modelo.Conta;
import Modelo.Mesa;
import Modelo.Praca;

import javax.swing.JInternalFrame;
import java.awt.Dimension;
import java.util.ArrayList;

public class TelaMesaPrincipal extends JFrame implements ActionListener {
	

	private ControlaCores controlaCores ;  //  @jve:decl-index=0:
	private JPanel buttonJPanel; 
	private JPanel buttonJPanel2;// panel to hold buttons
	private JButton[] buttons; // array of buttons
	private ArrayList<Mesa> arrayMesa;  //  @jve:decl-index=0:
	private DaoPraca daoPraca;  //  @jve:decl-index=0:
	private Mesa mesa;  //  @jve:decl-index=0:
	private ControleTelaContaAtual controle13;
	
	public TelaMesaPrincipal(){
		super("Mesas");
		initialize();
		
		
	}	
	private  void initialize(){
		 this.setExtendedState(Frame.MAXIMIZED_BOTH);		 
		 this.add(getJContentPane(),BorderLayout.CENTER);
		 this.add(getJContentPane2(),BorderLayout.SOUTH );
		
	}
	private JPanel getJContentPane() {
		if (buttonJPanel == null) {
			buttonJPanel = new JPanel();; 
			buttonJPanel.setLayout( new GridLayout( 8,9,5,5 ) );
			arrayMesa= new ArrayList<Mesa>();
			mesa = new Mesa();
			daoPraca=new DaoPraca();
			arrayMesa=daoPraca.getArrayMesa();
			buttons = new JButton[ arrayMesa.size() ];

		    controlaCores = new ControlaCores();
		    int[]cores = controlaCores.Cores();
		    buttonJPanel.setBackground(new Color(cores[0],cores[1],cores[2]));
		    Font fonte = new Font("Arial Black", Font.BOLD, 45);   
	       	
			// create and add buttons
			for ( int count = 0; count < buttons.length; count++ ){
				
				mesa = arrayMesa.get(count);  
			    buttons[ count ] = new JButton( ""+(mesa.getNumero()));
			    buttons[count].setFont(fonte);
			    buttons[ count ].setPreferredSize(new Dimension(50, 50));
			    buttons[count].addActionListener(this);
			    buttonJPanel.add( buttons[ count ] );
			    DaoConta daoConta = new DaoConta();
			    Conta conta=new Conta();
			    ArrayList<Conta>arrayConta = new ArrayList<Conta>();
				arrayConta = daoConta.listarConta(mesa.getNumero());
				
				
				
				String tip="";
			    if(arrayConta!=null)				
					for(int a=0;a<arrayConta.size();a++){				
					    conta=(Conta) arrayConta.get(a);	
					   
					    if(conta.getCardapio().getGrupo().getPrecoVenda()==0){
					    	tip=tip+(conta.getCardapio().getItensAdicionais().getNome()+" - "+conta.getQuantidade()+" - \n");
					    }else{
					    	tip=tip+(conta.getCardapio().getGrupo().getNomeGrupo()+" -"+ String.valueOf(conta.getQuantidade()+" - \n"));
					    }
					}
			    buttons[count].setToolTipText(tip);
			   
			   
			    // add button to panel
	     	   if(mesa.getStatus().equals("Aberta"))
			    	buttons[count].setBackground(new Color (20,190,1));
			    else if( mesa.getStatus().equals("Aguardando")){
			    	buttons[count].setBackground(new Color(255,160,1));
	     	   
			    }else if( mesa.getStatus().equals("Reservada"))
			    	buttons[count].setBackground(Color.red);
	     	  
			    
			} // end for
	        
		}
		JOptionPane.showMessageDialog(null,"entrei no botoes");
		return   buttonJPanel; 
	}
	
	private JPanel getJContentPane2() {
		if (buttonJPanel2 == null) {
			buttonJPanel2 = new JPanel();// set up panel			
		    buttonJPanel2.setBackground(new Color(255,255,255));	       
			buttonJPanel2.setLayout( new GridLayout( 1,1,1,1 ));
			Font fonteLabel = new Font("Serif", Font.BOLD, 17);	
			JLabel label = new JLabel("DISPONÍVEL:");	      
			JLabel label2 = new JLabel("ABERTA:");
			JLabel label3 = new JLabel("AGUARDANDO PAGAMENTO:");
			JLabel label4 = new JLabel("RESERVADA:");
		    label.setFont(fonteLabel);
		    label2.setFont(fonteLabel);
		    label3.setFont(fonteLabel);
		    label4.setFont(fonteLabel);		      
		    label.setForeground(new Color (96,191,200));	      
	        label2.setForeground(new Color (20,190,1));
		    label3.setForeground(new Color(255,130,1));
		    label4.setForeground(Color.red);  
		  
		    buttonJPanel2.add(label);
		    buttonJPanel2.add(label2);
		    buttonJPanel2.add(label4);
		    buttonJPanel2.add(label3);
		   
			
			
		}
		return buttonJPanel2;
	}		
	
	public void actionPerformed(ActionEvent ev){
		String comando = ev.getActionCommand();
		TelaContaAtual telaContaAtual = new TelaContaAtual(Integer.parseInt(comando),this);
		telaContaAtual.setVisible(true);
		
				
		
	}
	public void atualizarImagem(Mesa mesa) {
		DaoPraca daoPraca = new DaoPraca();
		Mesa mesaStatus = new Mesa();
		mesaStatus=daoPraca.buscarStatus(mesa.getNumero());
		if(mesaStatus.getStatus().equals("Disponivel"))
	    	
		   buttons[mesa.getNumero()].setBackground(Color.BLUE);
	   
		 
    }
	
	

}
Código da mesa clicada:



[code]package Visao;


import java.awt.Color;
import java.awt.Font;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Rectangle;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.JLabel;
import javax.swing.JTextField;
import Controle.ControlaCores;
import Controle.ControleTelaContaAtual;
import Dao.DaoBebidas;
import Dao.DaoCardapio;
import Dao.DaoConta;
import Dao.DaoPraca;
import Modelo.Bebida;
import Modelo.Cardapio;
import Modelo.Conta;
import Modelo.Funcionario;
import Modelo.Grupo;
import Modelo.ItensAdicionais;
import Modelo.Mesa;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JInternalFrame;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.beans.PropertyVetoException;

import javax.swing.JComboBox;


public class TelaContaAtual extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton jButtonTransferir = null;
	private JButton jButtonAgregar = null;
	private JButton jButtonFechar = null;
	private JButton jButtonCancelar = null;
	private JButton jButtonSair = null;
	private ControlaCores controlaCores;  //  @jve:decl-index=0:
	private ControleTelaContaAtual controle4;
	private JScrollPane jScrollPane = null;
	private JTable jTableConsumo = null;
	private JLabel jLabelTitulo = null;
	private JLabel jLabelTotal = null;
	private JTextField jTextFieldTotal = null;
	private DefaultTableModel model;
	private JButton jButtonIngresso = null;
	private JButton jButtonGarrafa = null;
	private ArrayList><Cardapio> arrayCardapio=null;  //  @jve:decl-index=0:
	private ArrayList<Grupo> arrayGrupo=null;
	private ArrayList<Mesa> arrayMesa = null;  //  @jve:decl-index=0:
	private DaoPraca daoPraca;  //  @jve:decl-index=0:
	private DaoBebidas daoBebidas=null; 
	private DaoConta daoConta=null;//  @jve:decl-index=0:
	private Mesa mesa;  //  @jve:decl-index=0:
	private int numMesa;
	private Conta conta;  //  @jve:decl-index=0:
	private Grupo grupo;  //  @jve:decl-index=0:
	private ItensAdicionais itensAdicionais;//  @jve:decl-index=0:
	private Cardapio cardapio; //  @jve:decl-index=0:
	private TelaMesaPrincipal telaMesaPrincipal;
	private JLabel jLabelGarcon = null;
	private JLabel jLabelData = null;
	private JLabel jLabelHora = null;
	private JInternalFrame jInternalFrame = null;  //  @jve:decl-index=0:visual-constraint="748,280"
	private JPanel jContentPane1 = null;
	private JButton jButtonExcluir = null;
	private JInternalFrame jInternalFrame1 = null;
	private JPanel jContentPane11 = null;
	private JButton[] buttons;
	private JComboBox jComboBox = null;
	private JLabel jLabelText1 = null;
	private JButton jButtonOk = null;
	private JButton jButtonSair1 = null;
	private JFrame jFrameTransfere = null;  //  @jve:decl-index=0:visual-constraint="761,111"
	private JPanel jContentPane12 = null;
	private JButton jButton = null; 	
	private ArrayList<Conta> arrayConta=null;
	
	
	

	/**
	 * This is the default constructor
	 */
	public TelaContaAtual(int numero,TelaMesaPrincipal telaMesaPrincipal) {
		super();
		numMesa=numero;
		this.telaMesaPrincipal=telaMesaPrincipal;
		initialize(numero);
		
		listarConta(numero);
		
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize(int numero) {
		
		this.setSize(702, 527);
		this.setContentPane(getJContentPane(numero));
		this.setTitle("Conta nº:"+ numero);
		this.setLocationRelativeTo(this);
		controle4= new ControleTelaContaAtual (this,null,null);		
		
		
		
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane(int numero) {
		if (jContentPane == null) {			
			Font fonte = new Font("Times New Roman",Font.BOLD,14);
			jLabelHora = new JLabel();
			jLabelHora.setBounds(new Rectangle(309, 10, 87, 16));
			jLabelHora.setFont(fonte);
			jLabelHora.setText("");
			jLabelData = new JLabel();
			jLabelData.setBounds(new Rectangle(167, 10, 139, 16));
			jLabelData.setFont(fonte);
			jLabelData.setText("");
			jLabelGarcon = new JLabel();
			jLabelGarcon.setBounds(new Rectangle(410, 10, 248, 16));
			jLabelGarcon.setFont(fonte);			
			jLabelTotal = new JLabel();
			jLabelTotal.setBounds(new Rectangle(292, 411, 76, 16));
			jLabelTotal.setFont(fonte);
			jLabelTotal.setText("TOTAL :");		
			jLabelTitulo = new JLabel();
			jLabelTitulo.setBounds(new Rectangle(38, 10, 125, 16));
    		jLabelTitulo.setFont(fonte);
			jLabelTitulo.setText("Conta Nº "+numero);
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJButtonTransferir(), null);
			jContentPane.add(getJButtonAgregar(), null);
			jContentPane.add(getJButtonFechar(), null);
			jContentPane.add(getJButtonCancelar(), null);
			jContentPane.add(getJButtonSair(), null);
			controlaCores = new ControlaCores();
			int[]cores = controlaCores.Cores();
			jContentPane.setBackground(new Color(cores[0],cores[1],cores[2]));
			jContentPane.add(getJScrollPane(), null);
			jContentPane.add(jLabelTitulo, null);
			jContentPane.add(jLabelTotal, null);
			jContentPane.add(getJTextFieldTotal(), null);
			jContentPane.add(getJButtonIngresso(),null);
			jContentPane.add(getJButtonGarrafa(),null);
			jContentPane.add(jLabelGarcon, null);
			jContentPane.add(jLabelData, null);
			jContentPane.add(jLabelHora, null);
			jContentPane.add(getJButtonExcluir(), null);			
			jContentPane.add(getJInternalFrame1(), null);
			arrayGrupo = new ArrayList<Grupo>();
			daoBebidas = new DaoBebidas();
			daoConta = new DaoConta();
			
			daoPraca = new DaoPraca();
			Mesa mesa = new Mesa();
			
			mesa =daoPraca.buscarStatus(numero);
			
				
			
			Funcionario func = new Funcionario();
			func=daoConta.buscarFunc(numMesa);
			jLabelGarcon.setText("Atendida pelo garçon : "+func.getNome());
			arrayGrupo = daoBebidas.arrayGrupo();//cria um cardapio de opções			
			grupo = new Grupo();
			itensAdicionais = new ItensAdicionais ();
			cardapio = new Cardapio();
			conta = new Conta();
			int setLocal = 90;
			final JButton jButtonGrupo[] = new JButton[arrayGrupo.size()];//determina o tamanho do array de botões 
			for (int a = 0;a < arrayGrupo.size();a++){//cria os botões
				grupo=arrayGrupo.get(a);
				jButtonGrupo[a] = new JButton(grupo.getNomeGrupo());
				jButtonGrupo[a].setBounds(new Rectangle(485, setLocal, 189, 26));
				jButtonGrupo[a].setName(grupo.getNomeGrupo());
				jButtonGrupo[a].setText(grupo.getNomeGrupo());
				jButtonGrupo[a].setToolTipText(String.valueOf(grupo.getPrecoVenda()));
				if(mesa.getStatus().equals("Aguardando"))
					jButtonGrupo[a].setEnabled(false);
					
				jButtonGrupo[a].addActionListener(new java.awt.event.ActionListener() {
					public void actionPerformed(java.awt.event.ActionEvent ev) {
						ativarBotoes(true);
						final Grupo grupo = new Grupo();
						Mesa mesa = new Mesa();
						grupo.setNomeGrupo(ev.getActionCommand());
						mesa.setNumero(numMesa);
						cardapio.setGrupo(grupo);
						itensAdicionais.setNome("");
						cardapio.setItensAdicionais(itensAdicionais);
						conta.setCardapio(cardapio);
						conta.setMesa(mesa);
						int quant =getQuantidade();
						if(quant!=0){
						 [b]       conta.setQuantidade(quant);	
							telaMesaPrincipal.atualizarImagem(mesa);	
							controle4.incluirItem(conta);[/b]
							
													
							
						}else{
							JOptionPane.showMessageDialog(null,"Não foi marcado nenhum item!");	   						   
						}
						
					}
				});
				jContentPane.add(jButtonGrupo[a]);//adiciona os botões ao painel
				
				setLocal=setLocal+30;//desce para a próxima linha
				
				
			}
			
		}
		return jContentPane;
	}
	
	public int getQuantidade(){
		
		int quantidade=0;
		TelaQuantidade  telaq = new TelaQuantidade(null,"Tela Q",true);
		telaq.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
	    telaq.setVisible(true); 
	    telaq.dispose();
		quantidade=telaq.getQuantidade();
		
	return quantidade;
	}
	
	private JButton getJButtonTransferir() {
		if (jButtonTransferir == null) {
			jButtonTransferir = new JButton();
			jButtonTransferir.setBounds(new Rectangle(111, 450,106, 29));
			jButtonTransferir.setText("Transferir");
			jButtonTransferir.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					int proxMesa=getNumMesaT("Disponivel");
					if(proxMesa!=0){
						int continua = JOptionPane.showConfirmDialog(null,"Confirma a transferência da mesa "+numMesa+" para "+proxMesa+" ? ",   "Continua (S/N)", JOptionPane.YES_NO_OPTION);
						if(continua==1){
						   JOptionPane.showMessageDialog(null,"Não houve transferência de mesa!");	
						   						   
						}else{
							controle4.transferirConta(numMesa,proxMesa);
							TelaContaAtual.this.dispose();
						}
					}else{
						JOptionPane.showMessageDialog(null,"Não houve transferência de mesa!");
						
					}
					
				}
			});
		}
		return jButtonTransferir;
	}

	/**
	 * This method initializes jButtonAgregar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonAgregar() {
		if (jButtonAgregar == null) {
			jButtonAgregar = new JButton();
			jButtonAgregar.setBounds(new Rectangle(222, 450, 106, 29));
			jButtonAgregar.setText("Agregar");
			jButtonAgregar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					int proxMesa=getNumMesaT("Aberta");
					if(proxMesa!=0){
						int continua = JOptionPane.showConfirmDialog(null,"Confirma a agregação da mesa "+numMesa+" para "+proxMesa+" ? ",   "Continua (S/N)", JOptionPane.YES_NO_OPTION);
						if(continua==1){
						   JOptionPane.showMessageDialog(null,"Não houve agregação de mesas!");	
						   						   
						}else{
							controle4.transferirConta(numMesa,proxMesa);
							TelaContaAtual.this.dispose();
						}
					}else{
						JOptionPane.showMessageDialog(null,"Não houve agregação de mesas!");
						
					}
					
				}
			});
		}
		return jButtonAgregar;
	}

	/**
	 * This method initializes jButtonFechar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonFechar() {
		if (jButtonFechar == null) {
			jButtonFechar = new JButton();
			jButtonFechar.setBounds(new Rectangle(20, 450, 86, 29));
			jButtonFechar.setText("Fechar");
		}
		return jButtonFechar;
	}

	/**
	 * This method initializes jButtonCancelar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonCancelar() {
		if (jButtonCancelar == null) {
			jButtonCancelar = new JButton();
			jButtonCancelar.setBounds(new Rectangle(444, 450, 122, 29));
			jButtonCancelar.setText("Cancelar Conta");
			jButtonCancelar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					controle4.cancelarConta(numMesa);
				}
			});
		}
		return jButtonCancelar;
	}

	/**
	 * This method initializes jButtonSair	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonSair() {
		if (jButtonSair == null) {
			jButtonSair = new JButton();
			jButtonSair.setBounds(new Rectangle(571, 450, 85, 29));
			jButtonSair.setText("Sair");
			jButtonSair.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					TelaContaAtual.this.dispose();
				}
			});
		}
		return jButtonSair;
	}

	public void setOuvinte4(ActionListener controleConta){
		
		jButtonTransferir.addActionListener(controleConta);
		jButtonAgregar.addActionListener(controleConta);
		jButtonFechar.addActionListener(controleConta);    
		jButtonCancelar.addActionListener(controleConta);
		jButtonExcluir.addActionListener(controleConta);
		jButtonOk.addActionListener(controleConta);
	
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setBounds(new Rectangle(20, 30, 460, 370));
			jScrollPane.setViewportView(getJTableConsumo());
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTableConsumo	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getJTableConsumo() {
		
		
		daoBebidas = new DaoBebidas();
		if (jTableConsumo == null) {
			String []colunas = new String []{"NOME DO PRODUTO","QUANTIDADE","PREÇO UNIDADE","SUBTOTAL"};
			String [][] linhas = new String [][]{};
			model = new DefaultTableModel(linhas,colunas);
			
			
			
			jTableConsumo = new JTable(model){
			public boolean isCellEditable(int row,int column){  
				if ((column==0)||(column==1)||(column==2)||(column==3))
					return false;
				else
			        return true;  
			  }  
			};
			
			jTableConsumo.getColumnModel().getColumn(0).setPreferredWidth(120);
			jTableConsumo.getColumnModel().getColumn(1).setPreferredWidth(8);
			jTableConsumo.getColumnModel().getColumn(2).setPreferredWidth(50);
			jTableConsumo.getColumnModel().getColumn(3).setPreferredWidth(3);
			
		}
		return jTableConsumo;
	}

	/**
	 * This method initializes jTextFieldTotal	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextFieldTotal() {
		if (jTextFieldTotal == null) {
			jTextFieldTotal = new JTextField();
			jTextFieldTotal.setBounds(new Rectangle(377, 406, 103, 26));
			jTextFieldTotal.setBackground(new Color(15,150,150));
		}
		return jTextFieldTotal;
	}

	/**
	 * This method initializes jButtonIngresso	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonIngresso() {
		if (jButtonIngresso == null) {
			jButtonIngresso = new JButton();
			jButtonIngresso.setBounds(new Rectangle(485, 30, 189, 26));
			jButtonIngresso.setText("Ingresso");
			DaoCardapio daoCardapio =new DaoCardapio();
			itensAdicionais = new ItensAdicionais();
			itensAdicionais=daoCardapio.buscarItem("Ingresso");
			daoPraca = new DaoPraca();
			mesa = new Mesa();			
			mesa =daoPraca.buscarStatus(numMesa);
			if(mesa.getStatus().equals("Aguardando"))
				jButtonIngresso.setEnabled(false);
			jButtonIngresso.setToolTipText(String.valueOf(itensAdicionais.getValor()));
			jButtonIngresso.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					ativarBotoes(true);
					conta = new Conta();
					cardapio = new Cardapio();
					ItensAdicionais itensAdicionais = new ItensAdicionais();
					Grupo grupo = new Grupo();
					grupo.setNomeGrupo("");
					itensAdicionais.setNome("Ingresso");
					cardapio.setItensAdicionais(itensAdicionais);
					conta.setCardapio(cardapio);
				    mesa = new Mesa();
					mesa.setNumero(numMesa);
					conta.setMesa(mesa);
					conta.setQuantidade(getQuantidade());
					controle4.incluirItem(conta);
					
				}
			});
		}
		return jButtonIngresso;
	}

	
	private JButton getJButtonGarrafa() {
		if (jButtonGarrafa == null) {
			jButtonGarrafa = new JButton();
			jButtonGarrafa.setBounds(new Rectangle(485, 60, 189, 26));
			jButtonGarrafa.setText("Garrafa");
			daoPraca = new DaoPraca();
			mesa = new Mesa();			
			mesa =daoPraca.buscarStatus(numMesa);
			if(mesa.getStatus().equals("Aguardando"))
				jButtonGarrafa.setEnabled(false);
			jButtonGarrafa.setToolTipText("0.00");
			jButtonGarrafa.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					ativarBotoes(true);
					conta = new Conta();
					cardapio = new Cardapio();
					itensAdicionais = new ItensAdicionais();					
					itensAdicionais.setNome("Garrafa");
					cardapio.setItensAdicionais(itensAdicionais);
					conta.setCardapio(cardapio);
					mesa = new Mesa();
					mesa.setNumero(numMesa);
					conta.setMesa(mesa);
				    conta.setQuantidade(getQuantidade());
					controle4.incluirItem(conta);
				}
			});
		}
		return jButtonGarrafa;
	}
	
	public void escreverConta(ArrayList<Conta> arrayConta){
		
		conta =new Conta();
		grupo = new Grupo();
		double totalConta=0,subTotal=0 ;
		if(arrayConta.size()>0){
		    conta=(Conta) arrayConta.get(0);
		    SimpleDateFormat hf =new SimpleDateFormat("HH:mm:ss");
			SimpleDateFormat df =new SimpleDateFormat("dd/MM/yyyy");
			jLabelData.setText("Aberta em "+df.format(conta.getDataConta()));
			jLabelHora.setText("as "+hf.format(conta.getHoraConta()));
		}else{
			ativarBotoes(false);
		}
		model.setNumRows(0);
		model.isCellEditable(0,3);
		if(arrayConta!=null)
			for(int a=0;a<arrayConta.size();a++){				
			    conta=(Conta) arrayConta.get(a);
			   
			    if(conta.getCardapio().getGrupo().getPrecoVenda()==0){
			    	subTotal=+conta.calcularTotal(conta.getQuantidade(),conta.getCardapio().getItensAdicionais().getValor());
				    model.addRow(new String[]{conta.getCardapio().getItensAdicionais().getNome(),String.valueOf(conta.getQuantidade()),String.valueOf(conta.getCardapio().getItensAdicionais().getValor()),String.valueOf(subTotal)});
			       
			    }else{
			    	subTotal=+conta.calcularTotal(conta.getQuantidade(),conta.getCardapio().getGrupo().getPrecoVenda());
				    model.addRow(new String[]{conta.getCardapio().getGrupo().getNomeGrupo(),String.valueOf(conta.getQuantidade()),String.valueOf(conta.getCardapio().getGrupo().getPrecoVenda()),String.valueOf(subTotal)});
				    
			    }
			    totalConta=totalConta+subTotal;
			}
		Font fonte = new Font("Arial Black",Font.BOLD,15);
		jTextFieldTotal.setFont(fonte);
		jTextFieldTotal.setText(String.valueOf(totalConta));
	}
	
	public int getLinhaSelecionada(){
    	int linhaSelecionada= jTableConsumo.getSelectedRow() ;
    	
    	return linhaSelecionada;
    }
	
	public void ativarBotoes(boolean estado){
		jButtonTransferir.setEnabled(estado);
		jButtonAgregar.setEnabled(estado);
		jButtonFechar.setEnabled(estado);    
		jButtonCancelar.setEnabled(estado);
		jButtonExcluir.setEnabled(estado);
		
		
	}
	
	public Conta lerConta(int linha){
    	conta = new Conta();
    	grupo = new Grupo();
    	mesa = new Mesa();
    	String nome="";
    	int quantidade=-1;  	
    	
    	
	    try{
		    nome = (String)model.getValueAt(linha,0);
		    quantidade=(Integer.parseInt((String)model.getValueAt(linha,1)));
		   
		    grupo.setNomeGrupo(nome);
		   
			cardapio.setGrupo(grupo);
			mesa.setNumero(numMesa);
			conta.setMesa(mesa);
			
	        conta.setCardapio(cardapio)	;
	        conta.setQuantidade(quantidade);
	       
	        
	    }catch(NumberFormatException ev){
	    	
	   
	    }
	 
	    
	    return conta;
    }

	/**
	 * This method initializes jButtonExcluir	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonExcluir() {
		if (jButtonExcluir == null) {
			jButtonExcluir = new JButton();
			jButtonExcluir.setBounds(new Rectangle(333, 450, 106, 29));
			jButtonExcluir.setText("Excluir Item");
		}
		return jButtonExcluir;
	}

	/**
	 * This method initializes jInternalFrame1	
	 * 	
	 * @return javax.swing.JInternalFrame	
	 */
	private JInternalFrame getJInternalFrame1() {
		if (jInternalFrame1 == null) {
			jInternalFrame1 = new JInternalFrame("Transferência");
			jInternalFrame1.setBounds(new Rectangle(557, 383, 51, 34));
			jInternalFrame1.setContentPane(getJContentPane11());
			jInternalFrame1.setVisible(true);
			jInternalFrame1.setBackground(new Color(173,200,178));
			jInternalFrame1.setVisible(false);
			
			
		}
		return jInternalFrame1;
	}

	/**
	 * This method initializes jContentPane11	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJContentPane11() {
		if (jContentPane11 == null) {
			jLabelText1 = new JLabel();
			jLabelText1.setBounds(new Rectangle(32, 0, 152, 36));
			jLabelText1.setText("Selecione a mesa.");
			jContentPane11 = new JPanel();
			jContentPane11.setLayout(null);
			jContentPane11.add(getJComboBox(), null);
			jContentPane11.add(jLabelText1, null);
			jContentPane11.add(getJButtonOk(), null);
			jContentPane11.add(getJButtonSair1(), null);
		}
		return jContentPane11;
	}
	
	public void criarButtons(String font){
        Font fonte = new Font(font, Font.BOLD, 45);
        
        arrayMesa= new ArrayList><Mesa>();
		mesa = new Mesa();
		daoPraca=new DaoPraca();
		arrayMesa=daoPraca.getArrayMesaStatus("Aberta");
		buttons = new JButton[ arrayMesa.size() ];
		
       	
		// create and add buttons
		for ( int count = 0; count < arrayMesa.size(); count++ ){
			
			mesa = arrayMesa.get(count);  
		    buttons[ count ] = new JButton( ""+(mesa.getNumero()));
		    buttons[count].setFont(fonte);
		    buttons[ count ].setPreferredSize(new Dimension(50, 50));
		    buttons[count].addActionListener(controle4);
		    jContentPane11.add( buttons[ count ] );
		    
		   
		    
		} // end for
		
		
		  this.repaint();
	}

	/**
	 * This method initializes jComboBox	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getJComboBox() {
		if (jComboBox == null) {
			jComboBox = new JComboBox();
			jComboBox.setBounds(new Rectangle(36, 35, 93, 29));			     
	        arrayMesa= new ArrayList<Mesa>();
			mesa = new Mesa();
			daoPraca=new DaoPraca();
			arrayMesa=daoPraca.getArrayMesa();
			jComboBox.addItem("Selecione");
			
			
			
			for ( int count = 0; count < arrayMesa.size(); count++ ){
				
				mesa = arrayMesa.get(count); 
				jComboBox.addItem(mesa.getNumero());
				mesa.setNumero(jComboBox.getSelectedIndex());
			  
			  
			} // end for
			
		}
		return jComboBox;
	}

	/**
	 * This method initializes jButtonOk	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonOk() {
		if (jButtonOk == null) {
			jButtonOk = new JButton();
			jButtonOk.setBounds(new Rectangle(21, 75, 73, 29));
			jButtonOk.setText("Ok");
		}
		return jButtonOk;
	}

	/**
	 * This method initializes jButtonSair1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButtonSair1() {
		if (jButtonSair1 == null) {
			jButtonSair1 = new JButton();
			jButtonSair1.setBounds(new Rectangle(100, 75, 70, 29));
			jButtonSair1.setText("Sair");
			jButtonSair1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					jFrameTransfere.dispose();
					
				}
			});
		}
		return jButtonSair1;
	}
	public  void ativarInternalFrame(){
		jInternalFrame1.setVisible(true);
		jInternalFrame1.moveToFront();
	}

	/**
	 * This method initializes jFrameTransfere	
	 * 	
	 * @return javax.swing.JFrame	
	 */
	public  JFrame getJFrameTransfere() {
		if (jFrameTransfere == null) {
			jFrameTransfere = new JFrame();
			jFrameTransfere.setLocation(140, 490);
			jFrameTransfere.setSize(new Dimension(190, 151));
			jFrameTransfere.setContentPane(getJContentPane11());
			jFrameTransfere.setVisible(true);
		}
		return jFrameTransfere;
	}

	
    public void listarConta(int numeroConta){
		
		daoConta = new DaoConta();
		arrayConta = new ArrayList<Conta>();
		arrayConta = daoConta.listarConta(numeroConta);		
		escreverConta(arrayConta);	
		
		
		
	}
    
    
    public int getNumMesaT(String opcao){
		
		int nmT=0;
		TelaTransferencia  telat = new TelaTransferencia(null,"TelaT",true,opcao);
		telat.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		telat.setVisible(true);
		telat.dispose();
		nmT=telat.getQuantidade();
		
	return nmT;
	}

	public Mesa getNumMesa() {
		mesa.setNumero(numMesa);		
		return mesa;
	}

}
[code]
R

Resolvi boa parte do problema.
Passei o indice como parâmetro para a nova tela.Quando precisei retornei
esse índice para o método atualizarImagem(int indice,Mesa mesa).
Voçê, que conhece boas técnicas de programação, achou isso 'gambiarra'?

Muito obrigado.Mesmo.De coração.

public void actionPerformed(ActionEvent ev){
		int indice=-1;
		for ( int count = 0; count < buttons.length; count++ ){
			if(ev.getSource()==buttons[count])
				indice =count;
		}
		
		
		TelaContaAtual telaContaAtual = new TelaContaAtual(Integer.parseInt(ev.getActionCommand()),this,indice);
		telaContaAtual.setVisible(true);
		
				
		
	}
	public void atualizarImagem(int indice,Mesa mesa) {
		DaoPraca daoPraca = new DaoPraca();
		Mesa mesaStatus = new Mesa();
		mesaStatus=daoPraca.buscarStatus(mesa.getNumero());
		if(mesaStatus.getStatus().equals("Disponivel"))	    	
		    buttons[indice].setBackground(new Color (20,190,1));
		if(mesaStatus.getStatus().equals("Aberta"))
			buttons[indice].setBackground(Color.BLUE);
		 
    }
R

Resolvi boa parte do problema.
Passei o indice como parâmetro para a nova tela.Quando precisei retornei
esse índice para o método atualizarImagem(int indice,Mesa mesa).
Voçê, que conhece boas técnicas de programação, achou isso 'gambiarra'?

Muito obrigado.Mesmo.De coração.

public void actionPerformed(ActionEvent ev){
		int indice=-1;
		for ( int count = 0; count < buttons.length; count++ ){
			if(ev.getSource()==buttons[count])
				indice =count;
		}
		
		
		TelaContaAtual telaContaAtual = new TelaContaAtual(Integer.parseInt(ev.getActionCommand()),this,indice);
		telaContaAtual.setVisible(true);
		
				
		
	}
	public void atualizarImagem(int indice,Mesa mesa) {
		DaoPraca daoPraca = new DaoPraca();
		Mesa mesaStatus = new Mesa();
		mesaStatus=daoPraca.buscarStatus(mesa.getNumero());
		if(mesaStatus.getStatus().equals("Disponivel"))	    	
		    buttons[indice].setBackground(new Color (20,190,1));
		if(mesaStatus.getStatus().equals("Aberta"))
			buttons[indice].setBackground(Color.BLUE);
		 
    }
Criado 10 de junho de 2011
Ultima resposta 18 de jun. de 2011
Respostas 6
Participantes 2