Retornar (indice, texto do botao) de um vetor de botoes ao clicar

3 respostas
E

Amigos tem jeito de retornar o indice e o texto do botao desse vetor de botoes? como no codigo abaixo?
esses botoes vao variar o estatus entre aberto e fechado que sera´indicado por duas imagens.
tem jeito meus queridos?

public class Mesas extends JFrame implements ActionListener {

	private JButton [] Botoes   = new JButton[101];
	//private int	 [] Vetor	= new int[100];
	private JPanel grid = new JPanel();
	Container cp;
        private int mesas=0;
        private String situacao="F";

	public Mesas() {

		setSize(950, 462);
		setTitle("MESAS");
		centerJFrame(this);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setResizable(false);

		cp = getContentPane();
		cp.setLayout(null);

                ImageIcon icone;

                if (situacao.equals("A")){
                  icone = new ImageIcon("/sistbar/icones/Aberto.png");
                }else{
                  icone = new ImageIcon("/sistbar/icones/Fechado.png");
                }
               

		grid.setBounds(20, 20, 900, 400);
		grid.setLayout(new GridLayout(10, 5, 2, 2));


		for(int i=1;i<101;i++) {
                    mesas ++;
			Botoes[i] = new JButton(String.valueOf(mesas),icone);
			Botoes[i].addActionListener(this);
			Botoes[i].setFocusable(false);
			grid.add(Botoes[i]);
		}

		
		cp.add(grid);
		
	}

        private void verificaSituacao(){

        //verificar situação das mesas no banco 


        }
	
	private void centerJFrame(JFrame frame) {

		Dimension paneSize= frame.getSize();
		Dimension screenSize= frame.getToolkit().getScreenSize();
		frame.setLocation( (screenSize.width - paneSize.width) / 2, (screenSize.height - paneSize.height) / 2);

	}
       
	public void actionPerformed(ActionEvent e) {
           String indice = null;
           indice= Botoes[100].getText();
//nesse caso aqui eu retorno o indice pré definido, preciso em tempo de execução ao clicar
	   JOptionPane.showMessageDialog(rootPane, "Voçe clicou no índice: "+ indice);

	}

	
	public static void main(String args[]) {

		Mesas app = new Mesas();
		app.show();

	}

}

3 Respostas

A

cara,

no seu metodo actionPerformed, vc vai ter que fazer um for na lista de botoes e verificar qual é igual ao e.getSource()(esse metodo retorna o objeto que executou o listener).

t+

E
alissonvla:
cara,

no seu metodo actionPerformed, vc vai ter que fazer um for na lista de botoes e verificar qual é igual ao e.getSource()(esse metodo retorna o objeto que executou o listener).

t+

Deus te abençoe meu querido!

consegui como vc falou! obrigado.

for(int i=1;i<101;i++) {
			if(e.getSource() == Botoes[i]) {
	                         Botoes[i].setText("X");
                                 Botoes[i].setEnabled(false);


                if (situacao.equals("A")){
                    Botoes[i].setIcon(icone = new ImageIcon("/sistbar/icones/Aberto.png"));

                }else{
               Botoes[i].setIcon(icone = new ImageIcon("/sistbar/icones/Fechado.png"));

                }
                                 Botoes[i].setIcon(icone);

                        }
              }
A

boaa,

cara so postar o seu codigo aqui para ficar mais elegante.

for (JButton botao : Botoes) {
			if (botao == e.getSource()) {
				botao.setText("X");
				botao.setEnabled(false);

				if (situacao.equals("A")) {
					botao.setIcon(new ImageIcon("/sistbar/icones/Aberto.png"));

				} else {
					botao.setIcon(new ImageIcon("/sistbar/icones/Fechado.png"));

				}
				break;
			}
		}

marque o post como resolvido

t+

Criado 26 de outubro de 2011
Ultima resposta 27 de out. de 2011
Respostas 3
Participantes 2