DocumentListener Java, Как я могу предотвратить пустую строку в JTextBox?

enter image description hereЯ работал над личным проектом, чтобы стать лучше с программированием. Моя цель - сделать его намного более надежным, я только начинаю. Я в настоящее время студент информатики. Во всяком случае, я работаю над созданием части программы, как показано на рисунке. Я рассчитываю почасовую заработную плату и предоставляю некоторые результаты, которые я еще не реализовал. Я использую DocumentListener, поэтому он будет автоматически рассчитан. Я получаю сообщение об ошибке, когда текст полностью удаляется из коробки. Я попытался исправить это с помощью оператора if:

 if (tipMon.equals("") || tipMon == null) {
 tipMon.setText("0");
 }

Вот что у меня так далеко. Это еще не сделано, и я прошу прощения за код noob. Я начал 2 месяца назад с фактического кодирования.

 import java.awt.GridLayout;
 import java.awt.event.ActionListener;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyListener;

 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JTextField;
 import javax.swing.JOptionPane;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.Document;
 import javax.swing.text.FieldView;

 public class deliveryDocListener extends JFrame implements ActionListener, 
DocumentListener{

private JLabel mon, tues, wed, thurs, fri, sat, sun, hourlyWage, blank, row2, monWage,
    tuesWage,wedWage,thursWage, friWage, satWage, sunWage, total, totalTips, totalHours, 
    totalHourlyEarnings, totalPay, weekPay;

private JTextField hourlyWageInput, tipMon, tipTues, tipWed, tipThurs, tipFri, tipSat, tipSun,
    hourMon, hourTues, hourWed, hourThurs, hourFri, hourSat, hourSun;


public deliveryDocListener(){
    super("Delivery Helper v0.1 Alpha");
    setLayout(new GridLayout(0,4));

    hourlyWage = new JLabel("Hourly Wage: ");
    add(hourlyWage);
    hourlyWageInput = new JTextField("7.25", 5);

    add(hourlyWageInput);
    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);

    row2 = new JLabel("Day of the Week");
    add(row2);
    row2 = new JLabel("Tips");
    add(row2);
    row2 = new JLabel("Hours Worked");
    add(row2);
    row2 = new JLabel("Hourly Earnings");
    add(row2);

    mon = new JLabel("Monday");
    add(mon);



    tipMon = new JTextField("0");

    Document tipMonListener = tipMon.getDocument();
    //Document class doc variable stores what happens in the getDocument()
    //method, getDocument() i think is what checked it real time we shall see
    tipMonListener.addDocumentListener(this);
    //add listener to he text field, this refers to most recent object (tipMon = new JTextField("0");"
    //notice how its purple is the same as new where the object got made?
    add(tipMon);

    hourMon = new JTextField("0");
    Document hourMonListener = hourMon.getDocument();
    hourMonListener.addDocumentListener(this);
    add(hourMon);


    monWage = new JLabel("0");
    add(monWage);

    tues = new JLabel("Tuesday");
    add(tues);
    tipTues = new JTextField("0");
    add(tipTues);
    hourTues = new JTextField("0");
    add(hourTues);
    tuesWage = new JLabel("0");
    add(tuesWage);

    wed = new JLabel("Wednesday");
    add(wed);
    tipWed = new JTextField("0");
    add(tipWed);
    hourWed = new JTextField("0");
    add(hourWed);
    wedWage = new JLabel("0");
    add(wedWage);

    thurs = new JLabel("Thursday");
    add(thurs);
    tipThurs = new JTextField("0");
    add(tipThurs);
    hourThurs = new JTextField("0");
    add(hourThurs);
    thursWage = new JLabel("0");
    add(thursWage);

    fri = new JLabel("Friday");
    add(fri);
    tipFri = new JTextField("0");
    add(tipFri);
    hourFri = new JTextField("0");
    add(hourFri);
    friWage = new JLabel("0");
    add(friWage);

    sat = new JLabel("Saturday");
    add(sat);
    tipSat = new JTextField("0");
    add(tipSat);
    hourSat = new JTextField("0");
    add(hourSat);
    satWage = new JLabel("0");
    add(satWage);

    sun = new JLabel("Sunday");
    add(sun);
    tipSun = new JTextField("0");
    add(tipSun);
    hourSun = new JTextField("0");
    add(hourSun);
    sunWage = new JLabel("0");
    add(sunWage);

    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);

    total = new JLabel("Total: ");
    add(total);
    totalTips = new JLabel("totalTipsOutput");
    add(totalTips);
    totalHours = new JLabel("totalHoursOutput");
    add(totalHours);
    totalHourlyEarnings = new JLabel("totalHourlyEarningsOutput");
    add(totalHourlyEarnings);

    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);

    blank = new JLabel();
    add(blank);
    blank = new JLabel();
    add(blank);
    totalPay = new JLabel("Gross Income: ");
    add(totalPay);
    weekPay = new JLabel("totalPayOutput");
    add(weekPay);

}

@Override
public void changedUpdate(DocumentEvent e) { 
    // TODO Auto-generated method stub

}

@Override
public void insertUpdate(DocumentEvent e) {
    //executes when someone enters text into input
    String tipMonStr = tipMon.getText();
    //monWage.setText(tipMonStr);
    String hourMonStr = hourMon.getText();

    double x = Double.parseDouble(tipMonStr);
    double y = Double.parseDouble(hourMonStr);
    double z = Double.parseDouble(hourlyWageInput.getText());

    if (tipMonStr.length() == 0) {
        tipMon.setText("0");
    }

    if (hourMonStr.length() == 0) {
        y = 0;
        hourMonStr = "0";
    }

    if (hourlyWageInput.getText().length() == 0) {
        z = 0;
        //String z = "0";
    }

    monWage.setText(Double.toString((z*y+x)/y));

    //bug when nothing in cell because no number (0) to use in math
}

@Override
public void removeUpdate(DocumentEvent e) {
    //executes when someone enters text into input
    String tipMonStr = tipMon.getText();
    //monWage.setText(tipMonStr);
    String hourMonStr = hourMon.getText();

    double x = Double.parseDouble(tipMonStr);
    double y = Double.parseDouble(hourMonStr);
    double z = Double.parseDouble(hourlyWageInput.getText());
    monWage.setText(Double.toString((z*y+x)/y));

    if (tipMon.equals("") || tipMon == null) {
        tipMon.setText("0");
    }

}


public void updateLog(DocumentEvent e, String action) {
    monWage.setText(Double.toString(5));
}

@Override
public void actionPerformed(ActionEvent arg0) {
    monWage.setText(Double.toString(5));

}

}

Ответы на вопрос(3)

Ваш ответ на вопрос