Tiago Massoni
Centro de Informática
Universidade Federal de Pernambuco
Recife, 01 de agosto de 2005
1. Considere a seguinte classe definida em Java, que define um aplicativo gráfico front-end para uma máquina de vendas de doces:
public class MinhaMaquina extends Frame implements ActionListener{ private MaquinaDeVenda mv; private Button botaoDinheiro, botaoChocolate, botaoAmendoim; private TextField campo,resposta; public MinhaMaquina(){ mv = new MaquinaDeVenda(); botaoDinheiro = new Button("Vender"); botaoChocolate = new Button("Chocolate"); botaoAmendoim = new Button("Amendoim"); campo = new TextField();resposta = new TextField(); this.add(botaoDinheiro); this.add(botaoChocolate); this.add(botaoChocolate); this.add(campo);this.add(resposta); this.setLayout(new FlowLayout()); this.setSize(new Dimension(302, 221)); this.show(); ... } ... }
Complemente a classe e o construtor acima com o código necessário para que o objeto da classe MinhaMaquina faça a interface entre o usuário, quando clicar nos seus botões, e os serviços do objeto MaquinaDeVenda. Este oferece dois métodos:
Os botões botaoChocolate e botaoAmendoim definem a escolha do produto para a venda atual, caso sejam clicados. Considere que um objeto MaquinaDeVenda define a opção Chocolate como default. Já o botão botaoDinheiro deve realizar a venda e mostrar a mensagem resultante na caixa de texto resposta. Lembre-se que todo botão tem o método addActionListener, que recebe um parâmetro da interface abaixo, implementada por MinhaMaquina. O método setText pode ser usado para escrever em um campo de texto. O botão fonte (origem) de um evento como ActionEvent pode ser obtido através do método getActionCommand, que retorna uma determinada String identificando o botão clicado (considere que a String identificadora é o título do botão).
public interface ActionListener extends
EventListener {
public void actionPerformed(ActionEvent e);
}