2016-11-12 12 views
-1

Как создать калькулятор простых интересов в Netbeans, в котором, если текстовое поле ставки пуста, скорость автоматически устанавливается на 8.5 и аналогичное время в течение 1 года?Как сделать значение по умолчанию для jTextField, если оно пусто

+1

Вы уже ответили на свой вопрос. 'если текстовое поле ставки пуст' что-то делать. – camickr

+0

Я не понял -mamickr –

ответ

0

Существует не менее двух сценариев, которые необходимо учитывать.

  1. Ничто не было введено
  2. Не-номер был введен

У вас также есть два различных типа полевых

  1. Интерес: десятичного типа (например, float)
  2. Год: Тип целочисленного типа (например. int)

Я написал некоторые вспомогательные функции, чтобы помочь разобрать «пустое» значение. Эти вспомогательные функции являются решением, но есть приведенный ниже пример.

// Parses a JTextField for a float 
public static float parseFloat(JTextField f, float defaultVal, float failureVal) { 
    if (f == null || f.getText().trim().isEmpty()) { 
     return defaultVal; 
    } else { 
     try { 
      return Float.parseFloat(f.getText()); 
     } catch (NumberFormatException e) { 
      return failureVal; 
     } 
    } 
} 

// Parses a JTextField for an integer 
public static int parseInt(JTextField f, int defaultVal, int failureVal) { 
     if (f == null || f.getText().trim().isEmpty()) { 
      return defaultVal; 
     } else { 
      try { 
       return Integer.parseInt(f.getText()); 
      } catch (NumberFormatException e) { 
       return failureVal; 
      } 
     } 
} 

функции довольно очевидны, но цель состоит в том, чтобы обеспечить как «по умолчанию» значение 8.5 для интереса, а также значение ошибки упаковывают вы хотите, чтобы поймать эту проблему и предупредить пользователя.

Чтобы использовать эти функции, вы бы просто назвать их со всеми тремя параметрами:

System.out.println(parseFloat(rateField, 8.5f, 8.5f)); 
System.out.println(parseFloat(yearField, 1, 1)); 

год обработка ввода идентична обработке ввода процентной кроме Java использует явные числовые типы, так что копия и паста с float изменен на int.

Вот полный, рабочий пример:

import javax.swing.*; 
import java.awt.*; 

public class Main { 
    public static void main(String ... args) { 
     JLabel rateLabel = new JLabel("Rate:"); 
     JTextField rateField = new JTextField(10); 

     JLabel yearLabel = new JLabel("Year:"); 
     JTextField yearField = new JTextField(10); 

     // Use modal to wait for user input for proof of concept 
     JDialog dialog = new JDialog(); 
     dialog.setModal(true); 
     dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
     dialog.setLayout(new FlowLayout()); 
     dialog.getContentPane().add(rateLabel); 
     dialog.getContentPane().add(rateField); 
     dialog.getContentPane().add(yearLabel); 
     dialog.getContentPane().add(yearField); 
     dialog.pack(); 

     dialog.setVisible(true); 

     float rateValue = parseFloat(rateField, 8.5f, 8.5f); 
     int yearValue = parseInt(yearField, 1, 1); 

     JOptionPane.showMessageDialog(null, rateLabel.getText() + rateValue); 
     JOptionPane.showMessageDialog(null, yearLabel.getText() + yearValue); 

    } 

    // Parses a JTextField for a float 
    public static float parseFloat(JTextField f, float defaultVal, float failureVal) { 
     if (f == null || f.getText().trim().isEmpty()) { 
      return defaultVal; 
     } else { 
      try { 
       return Float.parseFloat(f.getText()); 
      } catch (NumberFormatException e) { 
       return failureVal; 
      } 
     } 
    } 

    // Parses a JTextField for an integer 
    public static int parseInt(JTextField f, int defaultVal, int failureVal) { 
      if (f == null || f.getText().trim().isEmpty()) { 
       return defaultVal; 
      } else { 
       try { 
        return Integer.parseInt(f.getText()); 
       } catch (NumberFormatException e) { 
        return failureVal; 
       } 
      } 
    } 
}