Исключения в методе слушателя - 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"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д