2015-06-08 2 views
2

Я работаю над программой расчета заработной платы для школы. Я только две недели работаю с графическими интерфейсами, поэтому у моих навыков есть много возможностей для роста. Все работает отлично, за исключением этого метода. Я пытаюсь получить метод для очистки JTextAreas, если введенный номер выходит за допустимые пределы и пропускает оставшийся код, который отправляет данные в JTextArea. На данный момент он распечатывает имя, dept и 0.00, если выходит за пределы диапазона, но я не хочу, чтобы он отображал что-либо, если оно не находится в пределах диапазона.вызов метода для перезапуска, если условие выполнено без использования цикла

public void buildAgain() { 

    // declare variables to hold the JTextField input as string 
    String rateStr, hoursStr, firstName, lastName, dept; 


    firstName = (String) fnameField.getText(); 
    lastName = (String) lnameField.getText(); 

    rateStr = rateField.getText(); 
    // convert the rate field into double in order to calculate it 
    rate = Double.parseDouble(rateStr); 


    hoursStr = hoursField.getText(); 
    // convert the hours into double in order to calculate it 
    hoursWorked = Double.parseDouble(hoursStr); 

    // Check how many hours worked to make sure they are within range 
    if(hoursWorked >= 0 && hoursWorked <=60) 
     hours = hoursWorked; 

    // Display message if hours are not within range 
    else 
     JOptionPane.showMessageDialog(null, "You have entered an invalid number of hours. \n" 
          + " Please enter a number between 0 and 60.", "Hour Entry Error", 
          JOptionPane.ERROR_MESSAGE); 

    // Clears JTextFields after the error message 
    fnameField.setText(""); 
    lnameField.setText(""); 
    hoursField.setText(""); 
    rateField.setText(""); 

    // check the hourly rate to make sure it is within range 
    if (rate >= 6 && rate <=150) 
     payRate = rate; 

    // display an error message if rate entered not within range 
    else 
     JOptionPane.showMessageDialog(null, "You have entered an invalid pay rate. \n " 
          + "Please enter the rate between 6 and 150.", "Pay Rate Error", 
          JOptionPane.ERROR_MESSAGE); 

    // clear the JTextFields after error message 
    fnameField.setText(""); 
    lnameField.setText(""); 
    hoursField.setText(""); 
    rateField.setText(""); 

    // calculate the pay regular hours 
    if (hours >= 0 && hours <= 40){ 
     weeklyPay = hours*payRate; 

    // Calculate overtime pay 
    } else if (hours > 40 && hours <= 60){ 
     overTime = (hours-40) * (payRate*1.5); 
     weeklyPay = overTime + (40*payRate); 
    } 

    // Display the total pay in uneditable table 
    totalPayField.setText("$"+dollar.format(weeklyPay)); 

    // Send name to JTextArea 
    list.append(firstName + " "); 
    list.append(lastName); 

    // Get the selected department 
    if(hr.isSelected()) 
     dept = hr.getText(); 
    else if(accounting.isSelected()) 
     dept = accounting.getText();//"Accounting"; 
    else if(marketing.isSelected()) 
     dept = marketing.getText(); 
    else if(sales.isSelected()) 
     dept = sales.getText(); 
    else 
     dept = shipping.getText(); 

    // Send selected department and pay to JTextArea 
    list.append("\t" + dept); 
    list.append("\t$" + dollar.format(weeklyPay) + "\n"); 

    } 

ответ

2

Вы почти у цели.

Переместить раздел кода, в котором вы очищаете свои JTextFields до того, как раздел кода, в котором вы проверяете часы работы, находится в пределах диапазона. Затем верните сразу после отображения сообщения об ошибке. Таким образом, выполнение метода не продолжается.

//Clears JTextFields before checking the error message 
fnameField.setText(""); 
... 

//check how many hours worked to make sure they are within range 
if(hoursWorked >= 0 && hoursWorked <=60) 
    hours = hoursWorked; 

//Display message if hours are not within range 
else 
    JOptionPane.showMessageDialog(null, "error msg.\n", JOptionPane.ERROR_MESSAGE); 
    return 

Примечание: Если вы хотите только поля очищены после Theres ошибки затем переместить их в другое заявление, где показано сообщение об ошибке.

Ex:

//check how many hours worked to make sure they are within range 
if(hoursWorked >= 0 && hoursWorked <=60) { 
    hours = hoursWorked; 

//Display message if hours are not within range 
} else { 
    JOptionPane.showMessageDialog(null, "error msg.\n", JOptionPane.ERROR_MESSAGE); 
    //Clears JTextFields before checking the error message 
    fnameField.setText(""); 
    ... 
    return 
} 
+0

Спасибо вам очень много братан. Так просто, но это было так далеко от меня, потому что я не знал. Хотел бы я проголосовать за это. еще раз спасибо. – sammyb123

Смежные вопросы