laialii

Livro Java 7 Capitulo 8 Página 158 Ex 8.7

Mar 25th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.01 KB | None | 0 0
  1. package cap08;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class GuiLista extends JPanel {
  5.     private JButton btCalcular;
  6.     private JLabel lbValor;
  7.     private JTextField tfValor, tfValorDesconto;
  8.     private JList liDesconto;//declaração do objeto da classe JList
  9.     private JScrollPane spLista;//declaração do objeto da classe JScrollPane, que será usado para rolar a lista de opções
  10.  
  11.     public GuiLista() {
  12.         inicializarComponentes();
  13.         definirEventos();
  14.     }
  15.  
  16.     private void inicializarComponentes() {
  17.         setLayout(null);
  18.         String[] liDescontoItems = {"10%", "20%", "30%", "40%", "50%"};//array de Strings que será add ao JList
  19.         btCalcular = new JButton("Calcular");
  20.         lbValor = new JLabel("Valor");
  21.         tfValor = new JTextField(5);
  22.         liDesconto = new JList(liDescontoItems);//essa lista contem as strings armazenadas no array liDescontoItens
  23.         tfValorDesconto = new JTextField(5);
  24.         spLista = new JScrollPane(liDesconto);//criação do painel de rolagem
  25.         btCalcular.setToolTipText("Faz o cálculo");
  26.         btCalcular.setMnemonic(KeyEvent.VK_C);
  27.         lbValor.setBounds(35, 05, 100, 25);
  28.         tfValor.setBounds(35, 30, 100, 25);
  29.         spLista.setBounds(35, 60, 100, 55);
  30.         btCalcular.setBounds(35, 120, 90, 25);
  31.         tfValorDesconto.setBounds(35, 150, 100, 25);
  32.         add(btCalcular);
  33.         add(lbValor);
  34.         add(tfValor);
  35.         add(spLista);
  36.         add(tfValorDesconto);
  37.     }
  38.  
  39.     private void definirEventos() {
  40.         //implementam o evento de ação para o botão calcular
  41.         btCalcular.addActionListener(new ActionListener() {
  42.             public void actionPerformed(ActionEvent arg0) {
  43.                 /*Verifica se a acixa de texto tfValor está vazia. Em caso positivo,
  44.                 devolve o foco para a caixa tfValor (quando o botão Calcular é pressionado, o foco é passado ao botão)
  45.                 por meio da linha 43 e retorna para a tela do usuário. Mesmo que o usuário pressione o botão
  46.                 Calcular, esse código faz com que o cursor permaneça na caixa Valor enquanto ela estiver vazia*/
  47.                 if (tfValor.getText().equals("")) {
  48.                     tfValor.requestFocus();
  49.                     return;
  50.                 }
  51.                 //Inicia o processo de cáculo do valor. Adicionado à estrutura try-catch para tratar erros de digitação.
  52.                 try {
  53.                     float valor = Float.parseFloat(tfValor.getText());
  54.                     if (liDesconto.getSelectedIndex() == -1) {
  55.                         /*Caso não exista nenhum item selecionado, uma mensagem de alerta é emitida e o
  56.                         cálculo é interrompido por meio do retorno à interface do usuário*/
  57.                         JOptionPane.showMessageDialog(null, "Selecione um item da lista");
  58.                         return;
  59.                     }
  60.                     //a letra f ao lado do número faz com que esse valor seja considerado float
  61.                     float desconto = 0.9f;
  62.                     if (liDesconto.getSelectedIndex() == 1) {
  63.                         desconto = 0.8f;
  64.                     } else if (liDesconto.getSelectedIndex() == 2) {
  65.                         desconto = 0.7f;
  66.                     } else if (liDesconto.getSelectedIndex() == 3) {
  67.                         desconto = 0.6f;
  68.                     } else if (liDesconto.getSelectedIndex() == 4) {
  69.                         desconto = 0.5f;
  70.                     }
  71.                     tfValorDesconto.setText("" + valor * desconto);/*cálculo do desconto é armazenado na caixa de texto
  72.                                                                     tfValorDesconto. O uso das aspas é necessário para manter
  73.                                                                     a compatibilidade de tipos entre o valor armazenado
  74.                                                                     e a caixa de texto*/
  75.                 }
  76.                 catch (NumberFormatException erro) {
  77.                     JOptionPane.showMessageDialog(null, "Forneça apenas valores numéricos\n" +
  78.                             erro.toString());
  79.                     tfValor.requestFocus();
  80.                 }
  81.             }
  82.         });
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment