Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cap08;
- import java.awt.event.*;
- import javax.swing.*;
- public class GuiLista extends JPanel {
- private JButton btCalcular;
- private JLabel lbValor;
- private JTextField tfValor, tfValorDesconto;
- private JList liDesconto;//declaração do objeto da classe JList
- private JScrollPane spLista;//declaração do objeto da classe JScrollPane, que será usado para rolar a lista de opções
- public GuiLista() {
- inicializarComponentes();
- definirEventos();
- }
- private void inicializarComponentes() {
- setLayout(null);
- String[] liDescontoItems = {"10%", "20%", "30%", "40%", "50%"};//array de Strings que será add ao JList
- btCalcular = new JButton("Calcular");
- lbValor = new JLabel("Valor");
- tfValor = new JTextField(5);
- liDesconto = new JList(liDescontoItems);//essa lista contem as strings armazenadas no array liDescontoItens
- tfValorDesconto = new JTextField(5);
- spLista = new JScrollPane(liDesconto);//criação do painel de rolagem
- btCalcular.setToolTipText("Faz o cálculo");
- btCalcular.setMnemonic(KeyEvent.VK_C);
- lbValor.setBounds(35, 05, 100, 25);
- tfValor.setBounds(35, 30, 100, 25);
- spLista.setBounds(35, 60, 100, 55);
- btCalcular.setBounds(35, 120, 90, 25);
- tfValorDesconto.setBounds(35, 150, 100, 25);
- add(btCalcular);
- add(lbValor);
- add(tfValor);
- add(spLista);
- add(tfValorDesconto);
- }
- private void definirEventos() {
- //implementam o evento de ação para o botão calcular
- btCalcular.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent arg0) {
- /*Verifica se a acixa de texto tfValor está vazia. Em caso positivo,
- devolve o foco para a caixa tfValor (quando o botão Calcular é pressionado, o foco é passado ao botão)
- por meio da linha 43 e retorna para a tela do usuário. Mesmo que o usuário pressione o botão
- Calcular, esse código faz com que o cursor permaneça na caixa Valor enquanto ela estiver vazia*/
- if (tfValor.getText().equals("")) {
- tfValor.requestFocus();
- return;
- }
- //Inicia o processo de cáculo do valor. Adicionado à estrutura try-catch para tratar erros de digitação.
- try {
- float valor = Float.parseFloat(tfValor.getText());
- if (liDesconto.getSelectedIndex() == -1) {
- /*Caso não exista nenhum item selecionado, uma mensagem de alerta é emitida e o
- cálculo é interrompido por meio do retorno à interface do usuário*/
- JOptionPane.showMessageDialog(null, "Selecione um item da lista");
- return;
- }
- //a letra f ao lado do número faz com que esse valor seja considerado float
- float desconto = 0.9f;
- if (liDesconto.getSelectedIndex() == 1) {
- desconto = 0.8f;
- } else if (liDesconto.getSelectedIndex() == 2) {
- desconto = 0.7f;
- } else if (liDesconto.getSelectedIndex() == 3) {
- desconto = 0.6f;
- } else if (liDesconto.getSelectedIndex() == 4) {
- desconto = 0.5f;
- }
- tfValorDesconto.setText("" + valor * desconto);/*cálculo do desconto é armazenado na caixa de texto
- tfValorDesconto. O uso das aspas é necessário para manter
- a compatibilidade de tipos entre o valor armazenado
- e a caixa de texto*/
- }
- catch (NumberFormatException erro) {
- JOptionPane.showMessageDialog(null, "Forneça apenas valores numéricos\n" +
- erro.toString());
- tfValor.requestFocus();
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment