Исключения в методе слушателя - Java

Узнай цену своей работы

Формулировка задачи:

Я пишу пытаюсь написать калькулятор для подсчета длины спиц на велосипедном колесе, при нажатии на баттон при условии заполненных полей должен проводиться рассчет и вывод результата (пока что через запись в метку и вывод на фрэйм), если какое-то поле не заполнено должно сработать исключение, но у меня получается, что я заполняю все поля валидными значениями у меня все= срабатывает исключение! Не могу разобраться почему так. За быдлокод сорри сорри, по другому пока-что не уметь
Листинг программы
  1. package ru.kopernik;
  2. import ru.kopernik.view.MainFrame;
  3. import javax.swing.*;
  4. import java.awt.*;
  5. public class Main {
  6. public static void main(String... args) throws InterruptedException {
  7. MainFrame frame = new MainFrame("Калькулятор для расчета длины спиц");
  8. frame.setVisible(true);
  9. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  10. frame.setSize(500,500);
  11. frame.setLocationRelativeTo(null);
  12. frame.setLayout(new FlowLayout());
  13. }
  14. }
**********************************
Листинг программы
  1. package ru.kopernik.view;
  2. import javax.swing.*;
  3. import ru.kopernik.logic.Calculation;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. public class MainFrame extends JFrame {
  7. Listener listener = new Listener();
  8. public JTextField spokeCountText, widthSleeveText, widthFlancSleeveText,
  9. betweenFlangesText, diameterHoleLeftText, diameterHoleRightText, diameterRimERDText,
  10. offsetText, crestCountLeftText, crestCountRightText, diameterHoleSpokeText;
  11. public int spokeCount, crestCountL, crestCountR;
  12. public double widthSleeve, widthFlangeSleeve, betweenFlanges, diameterHoleLeft, diameterHoleRight,
  13. diameterRimERD, offset;
  14. public JButton calculation;
  15. public JLabel wl, wr;
  16. public MainFrame(){
  17. }
  18. public MainFrame(String title){
  19. super(title);
  20. calculation = new JButton("Посчитать");
  21. JLabel crestCountLeftLabel = new JLabel("Количество крестов слева: ");
  22. JLabel crestCountRightLabel = new JLabel("Количество крестов справа: ");
  23. JLabel spokeCountLabel = new JLabel("Количество спиц: ");
  24. JLabel widthSleeveLabel = new JLabel("Ширина всей втулки: ");
  25. JLabel widthFlancSleeveLabel = new JLabel("От левого края втулки до \n" +
  26. "внутренней стороны левого фланца: ");
  27. JLabel betweenFlangesLabel = new JLabel("Между фланцами: ");
  28. JLabel diameterHoleLeftLabel = new JLabel("Диаметр отверстий левого фланца по центрам отверстий: ");
  29. JLabel diameterHoleRightLabel = new JLabel("Диаметр отверстий правого фланца по центрам отверстий: ");
  30. JLabel diameterRimERDLabel = new JLabel("Диаметр обода (ERD): ");
  31. JLabel offsetLabel = new JLabel("Смещение: ");
  32. JLabel diameterHoleSpokeLabel = new JLabel("Диаметр отверстия под спицу: ");
  33. wl = new JLabel("");
  34. wr = new JLabel("");
  35. spokeCountText = new JTextField(2);
  36. widthSleeveText = new JTextField(2);
  37. widthFlancSleeveText = new JTextField(2);
  38. betweenFlangesText = new JTextField(2);
  39. diameterHoleLeftText = new JTextField(2);
  40. diameterHoleRightText = new JTextField(2);
  41. diameterRimERDText = new JTextField(2);
  42. offsetText = new JTextField(2);
  43. crestCountLeftText = new JTextField(2);
  44. crestCountRightText = new JTextField(2);
  45. diameterHoleSpokeText = new JTextField(2);
  46. add(crestCountLeftLabel);
  47. add(crestCountLeftText);
  48. add(crestCountRightLabel);
  49. add(crestCountRightText);
  50. add(spokeCountLabel);
  51. add(spokeCountText);
  52. add(widthSleeveLabel);
  53. add(widthSleeveText);
  54. add(widthFlancSleeveLabel);
  55. add(widthFlancSleeveText);
  56. add(betweenFlangesLabel);
  57. add(betweenFlangesText);
  58. add(diameterHoleLeftLabel);
  59. add(diameterHoleLeftText);
  60. add(diameterHoleRightLabel);
  61. add(diameterHoleRightText);
  62. add(diameterRimERDLabel);
  63. add(diameterRimERDText);
  64. add(offsetLabel);
  65. add(offsetText);
  66. add(diameterHoleSpokeLabel);
  67. add(diameterHoleSpokeText);
  68. add(wl);
  69. add(wr);
  70. add(calculation);
  71. calculation.addActionListener(listener);
  72. }
  73. public class Listener implements ActionListener {
  74. @Override
  75. public void actionPerformed(ActionEvent summ) {
  76. try {
  77. if ((summ.getSource() == calculation)) {
  78. spokeCount = Integer.parseInt(spokeCountText.getText());
  79. crestCountL = Integer.parseInt(crestCountLeftText.getText());
  80. crestCountR = Integer.parseInt(crestCountRightText.getText());
  81. widthSleeve = Double.parseDouble(widthSleeveText.getText());
  82. widthFlangeSleeve = Double.parseDouble(widthFlancSleeveText.getText());
  83. betweenFlanges = Double.parseDouble(betweenFlangesText.getText());
  84. diameterHoleLeft = Double.parseDouble(diameterHoleLeftText.getText());
  85. diameterHoleRight = Double.parseDouble(diameterHoleRightText.getText());
  86. diameterRimERD = Double.parseDouble(diameterRimERDText.getText());
  87. offset = Double.parseDouble(offsetText.getText());
  88. Calculation calc = new Calculation();
  89. calc.calculationWl(widthSleeve, widthFlangeSleeve, betweenFlanges);
  90. calc.calculationWr(betweenFlanges);
  91. System.out.println(10);
  92. }
  93. } catch (Exception ex) {JOptionPane.showMessageDialog(null, "Error");}
  94. }
  95. }
  96. }
**********************************
Листинг программы
  1. package ru.kopernik.logic;
  2. import ru.kopernik.view.MainFrame;
  3. public class Calculation {
  4. double Wl, Wr, b;
  5. String wlRes;
  6. String wrRes;
  7. MainFrame mainFrame = new MainFrame();
  8. public void calculationWl(double widthSleeve, double widthFlangeSleeve, double betweenFlanges){
  9. this.b = widthSleeve - (widthFlangeSleeve + betweenFlanges);
  10. this.Wl = (betweenFlanges / 2) - widthFlangeSleeve;
  11. wlRes = "Wl = " + Wl;
  12. mainFrame.wl.setText(wlRes);
  13. }
  14. public void calculationWr(double betweenFlanges){
  15. this.Wr = (betweenFlanges / 2) - b;
  16. wrRes = "Wr = " + Wr;
  17. mainFrame.wr.setText(wrRes);
  18. }
  19. public double calculationSpokeLength(){
  20. // SpokeLengthx(x = L,x = R) = Math.sqrt(Wx^2+Dx^2+ERD^2-2*Dx*ERD*cos(360/(N/2)*K)); квадраты и косинус прописать
  21. return .0;
  22. }
  23. }

Решение задачи: «Исключения в методе слушателя»

textual
Листинг программы
  1. } catch (Exception ex) {
  2.     ex.printStackTrace();
  3.     JOptionPane.showMessageDialog(null, "Error");
  4. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут