Исключения в методе слушателя - Java
Формулировка задачи:
Я пишу пытаюсь написать калькулятор для подсчета длины спиц на велосипедном колесе, при нажатии на баттон при условии заполненных полей должен проводиться рассчет и вывод результата (пока что через запись в метку и вывод на фрэйм), если какое-то поле не заполнено должно сработать исключение, но у меня получается, что я заполняю все поля валидными значениями у меня все= срабатывает исключение! Не могу разобраться почему так. За быдлокод сорри сорри, по другому пока-что не уметь
**********************************
**********************************
package ru.kopernik;
import ru.kopernik.view.MainFrame;
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String... args) throws InterruptedException {
MainFrame frame = new MainFrame("Калькулятор для расчета длины спиц");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setLocationRelativeTo(null);
frame.setLayout(new FlowLayout());
}
}package ru.kopernik.view;
import javax.swing.*;
import ru.kopernik.logic.Calculation;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame extends JFrame {
Listener listener = new Listener();
public JTextField spokeCountText, widthSleeveText, widthFlancSleeveText,
betweenFlangesText, diameterHoleLeftText, diameterHoleRightText, diameterRimERDText,
offsetText, crestCountLeftText, crestCountRightText, diameterHoleSpokeText;
public int spokeCount, crestCountL, crestCountR;
public double widthSleeve, widthFlangeSleeve, betweenFlanges, diameterHoleLeft, diameterHoleRight,
diameterRimERD, offset;
public JButton calculation;
public JLabel wl, wr;
public MainFrame(){
}
public MainFrame(String title){
super(title);
calculation = new JButton("Посчитать");
JLabel crestCountLeftLabel = new JLabel("Количество крестов слева: ");
JLabel crestCountRightLabel = new JLabel("Количество крестов справа: ");
JLabel spokeCountLabel = new JLabel("Количество спиц: ");
JLabel widthSleeveLabel = new JLabel("Ширина всей втулки: ");
JLabel widthFlancSleeveLabel = new JLabel("От левого края втулки до \n" +
"внутренней стороны левого фланца: ");
JLabel betweenFlangesLabel = new JLabel("Между фланцами: ");
JLabel diameterHoleLeftLabel = new JLabel("Диаметр отверстий левого фланца по центрам отверстий: ");
JLabel diameterHoleRightLabel = new JLabel("Диаметр отверстий правого фланца по центрам отверстий: ");
JLabel diameterRimERDLabel = new JLabel("Диаметр обода (ERD): ");
JLabel offsetLabel = new JLabel("Смещение: ");
JLabel diameterHoleSpokeLabel = new JLabel("Диаметр отверстия под спицу: ");
wl = new JLabel("");
wr = new JLabel("");
spokeCountText = new JTextField(2);
widthSleeveText = new JTextField(2);
widthFlancSleeveText = new JTextField(2);
betweenFlangesText = new JTextField(2);
diameterHoleLeftText = new JTextField(2);
diameterHoleRightText = new JTextField(2);
diameterRimERDText = new JTextField(2);
offsetText = new JTextField(2);
crestCountLeftText = new JTextField(2);
crestCountRightText = new JTextField(2);
diameterHoleSpokeText = new JTextField(2);
add(crestCountLeftLabel);
add(crestCountLeftText);
add(crestCountRightLabel);
add(crestCountRightText);
add(spokeCountLabel);
add(spokeCountText);
add(widthSleeveLabel);
add(widthSleeveText);
add(widthFlancSleeveLabel);
add(widthFlancSleeveText);
add(betweenFlangesLabel);
add(betweenFlangesText);
add(diameterHoleLeftLabel);
add(diameterHoleLeftText);
add(diameterHoleRightLabel);
add(diameterHoleRightText);
add(diameterRimERDLabel);
add(diameterRimERDText);
add(offsetLabel);
add(offsetText);
add(diameterHoleSpokeLabel);
add(diameterHoleSpokeText);
add(wl);
add(wr);
add(calculation);
calculation.addActionListener(listener);
}
public class Listener implements ActionListener {
@Override
public void actionPerformed(ActionEvent summ) {
try {
if ((summ.getSource() == calculation)) {
spokeCount = Integer.parseInt(spokeCountText.getText());
crestCountL = Integer.parseInt(crestCountLeftText.getText());
crestCountR = Integer.parseInt(crestCountRightText.getText());
widthSleeve = Double.parseDouble(widthSleeveText.getText());
widthFlangeSleeve = Double.parseDouble(widthFlancSleeveText.getText());
betweenFlanges = Double.parseDouble(betweenFlangesText.getText());
diameterHoleLeft = Double.parseDouble(diameterHoleLeftText.getText());
diameterHoleRight = Double.parseDouble(diameterHoleRightText.getText());
diameterRimERD = Double.parseDouble(diameterRimERDText.getText());
offset = Double.parseDouble(offsetText.getText());
Calculation calc = new Calculation();
calc.calculationWl(widthSleeve, widthFlangeSleeve, betweenFlanges);
calc.calculationWr(betweenFlanges);
System.out.println(10);
}
} catch (Exception ex) {JOptionPane.showMessageDialog(null, "Error");}
}
}
}package ru.kopernik.logic;
import ru.kopernik.view.MainFrame;
public class Calculation {
double Wl, Wr, b;
String wlRes;
String wrRes;
MainFrame mainFrame = new MainFrame();
public void calculationWl(double widthSleeve, double widthFlangeSleeve, double betweenFlanges){
this.b = widthSleeve - (widthFlangeSleeve + betweenFlanges);
this.Wl = (betweenFlanges / 2) - widthFlangeSleeve;
wlRes = "Wl = " + Wl;
mainFrame.wl.setText(wlRes);
}
public void calculationWr(double betweenFlanges){
this.Wr = (betweenFlanges / 2) - b;
wrRes = "Wr = " + Wr;
mainFrame.wr.setText(wrRes);
}
public double calculationSpokeLength(){
// SpokeLengthx(x = L,x = R) = Math.sqrt(Wx^2+Dx^2+ERD^2-2*Dx*ERD*cos(360/(N/2)*K)); квадраты и косинус прописать
return .0;
}
}Решение задачи: «Исключения в методе слушателя»
textual
Листинг программы
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "Error");
}