Guest Athena Postado Agosto 20, 2004 Denunciar Share Postado Agosto 20, 2004 Olá! Será que você pode me ajudar?Eu estou fazendo um programinha em java que possuirespostas diferentes para cada um dos botões quando clicado.Criei na verdade um array de botões.Agora, como eu faço para saber qual botão foi clicado pelo usuário.Pois criei o evento ActionPerformed(ActionEvent event) paraa ação do botão. Neste método quero capturar o índice dobotão clicado. De acordo com o índice eu terei que imprimir uma letrano botão e então fiz: botao.setText("Clicado");Só que esta variavel "i" do índice não está associado com o índicedo botão clicado, por isso preciso descobrir um método que captureo valor do índice do botão clicado para eu jogar na variável "i".Fico grata se voce puder me ajudar! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Agosto 20, 2004 Denunciar Share Postado Agosto 20, 2004 Não sei bem como é o seu projeto, mas acho melhor se fosse feito dessa forma:Cada botão poderia pertencer a uma classe TicTacButton, por exemplo, que teria como pai a classe JButton. Nessa classe, você pode implementar a ação do botão e, depois, instanciálos.Detalhe extra: Ela pode conter um atributo indice que indicaria em que posição do vetor o botão estar. Poderia também ter um atributo pai ou algo assim para manter o vinculo com quem o instanceou, podendo assim chamar metodos dele diretamente nas suas ações. p.s.: É pra isso que existe a herança: você adicionar metodos a classes já existentes. No caso, adicione o atributo indice e a função getIndice(). Não se esqueça do construtor new TicTacButton(String label, int indice), viu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Agosto 21, 2004 Denunciar Share Postado Agosto 21, 2004 Opa! E aí, humanos? Olha só o que eu fiz, talvez ajude em alguma coisa:import javax.swing.*; import java.awt.event.*; import java.awt.*; public class VariosBotoes extends JFrame implements ActionListener { int n = 3; JButton b[]; public VariosBotoes() { b = new JButton[ n ]; getContentPane().setLayout( new GridLayout( 3, 1 ) ); for ( int i = 0; i < n; i++ ) { b[ i ] = new JButton( "Botão" ); b[ i ].addActionListener( this ); getContentPane().add( b[ i ] ); } pack(); setVisible( true ); } public void actionPerformed( ActionEvent a ) { for ( int i = 0; i < n; i++ ) if ( a.getSource() == b[ i ] ) b[ i ].setText( "Botão " + ( i + 1 ) + " clicado" ); } public static void main( String args[] ) { new VariosBotoes(); } }Até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Agosto 21, 2004 Denunciar Share Postado Agosto 21, 2004 Por que fazer n comparações, quando se pode fazer um algoritmo em O(1) ? Tipo.. cada vez que você clicar em um dos botões, ele vai checar cada um dos 9! E se fossem mais botoes... uns 900 (como no campo minado), por exemplo? Ainda seria viável?Acho que sempre devemos pensar na perfomance e no reaproveitamento do código, mesmo que o ganho não seja muito aparente. Para criar o botão com herança é tão simples! Olha só: class TicTacButton extends Button implements ActionListener { int index; public TicTacButton(String label, int i) { super(label); index = i; addActionListener(this); } public void actionPerformed(ActionEvent a) { setLabel("Botao " + index + " clicado!"); } } A orientação a objetos taí é pra fazer cada objeto se virar e cuidar das proprias ações, ao invés do bloco main() gigantesco fazer tudo por eles! Sempre que der, é bom usar herança, classes abstratas, interfaces, afinal, elas foram criadas para fins práticos, e não para tornar o aprendizado mais dificil. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Agosto 22, 2004 Denunciar Share Postado Agosto 22, 2004 Certamente, brother, afinal de que valeria uma das principais característica da linguagem (ela é totalmente orientada a objetos) se não usufruirmos de suas qualidades? Einstein já dizia: "Faça as coisas o mais simples que puder, porém não as mais simples"; eu fiz justamente o contrário. Deve-se visar sempre a generalzação do código, o que implica em sua reutilização.Valeu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Athena
Olá! Será que você pode me ajudar?
Eu estou fazendo um programinha em java que possui
respostas diferentes para cada um dos botões quando clicado.
Criei na verdade um array de botões.
Agora, como eu faço para saber qual botão foi clicado pelo
usuário.
Pois criei o evento ActionPerformed(ActionEvent event) para
a ação do botão. Neste método quero capturar o índice do
botão clicado. De acordo com o índice eu terei que imprimir uma letra
no botão e então fiz: botao.setText("Clicado");
Só que esta variavel "i" do índice não está associado com o índice
do botão clicado, por isso preciso descobrir um método que capture
o valor do índice do botão clicado para eu jogar na variável "i".
Fico grata se voce puder me ajudar!
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.