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