How could one go about seperating the logic and User Interface in the below Java program? What would that look like? Thank you! Source Code: package implementingRecursion; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class RecursiveProductCalculator extends JFrame { private JTextField[] numberFields; private JButton calculateButton; private JLabel resultLabel; public RecursiveProductCalculator() { setTitle("Recursive Product Calculator"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(7, 1)); numberFields = new JTextField[5]; for (inti = 0; i < 5; i++) { JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); JLabel label = new JLabel("Number " + (i + 1) + ": "); numberFields[i] = new JTextField(10); panel.add(label); panel.add(numberFields[i]); add(panel); } calculateButton = new JButton("Calculate"); calculateButton.addActionListener(new ActionListener() { @Override publicvoid actionPerformed(ActionEvent e) { try { int[] numbers = newint[5]; for (inti = 0; i < 5; i++) { // Perform validation for each input field if (!numberFields[i].getText().matches("-?\\d+")) { JOptionPane.showMessageDialog(null, "Invalid input in Number " + (i + 1) + "."); return; } numbers[i] = Integer.parseInt(numberFields[i].getText()); } intproduct = calculateProduct(numbers, 0); resultLabel.setText("Product: " + product); } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(null, "Invalid number format. Please enter valid integers."); } } }); add(calculateButton); resultLabel = new JLabel("Product: "); add(resultLabel); pack(); setVisible(true); } privateint calculateProduct(int[] numbers, intindex) { if (index == numbers.length - 1) { returnnumbers[index]; } else { returnnumbers[index] * calculateProduct(numbers, index + 1); } } publicstaticvoid main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override publicvoid run() { new RecursiveProductCalculator(); } }); } }
How could one go about seperating the logic and User Interface in the below Java program? What would that look like?
Thank you!
Source Code:
package implementingRecursion;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class RecursiveProductCalculator extends JFrame {
private JTextField[] numberFields;
private JButton calculateButton;
private JLabel resultLabel;
public RecursiveProductCalculator() {
setTitle("Recursive Product Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(7, 1));
numberFields = new JTextField[5];
for (inti = 0; i < 5; i++) {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
JLabel label = new JLabel("Number " + (i + 1) + ": ");
numberFields[i] = new JTextField(10);
panel.add(label);
panel.add(numberFields[i]);
add(panel);
}
calculateButton = new JButton("Calculate");
calculateButton.addActionListener(new ActionListener() {
@Override
publicvoid actionPerformed(ActionEvent e) {
try {
int[] numbers = newint[5];
for (inti = 0; i < 5; i++) {
// Perform validation for each input field
if (!numberFields[i].getText().matches("-?\\d+")) {
JOptionPane.showMessageDialog(null, "Invalid input in Number " + (i + 1) + ".");
return;
}
numbers[i] = Integer.parseInt(numberFields[i].getText());
}
intproduct = calculateProduct(numbers, 0);
resultLabel.setText("Product: " + product);
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Invalid number format. Please enter valid integers.");
}
}
});
add(calculateButton);
resultLabel = new JLabel("Product: ");
add(resultLabel);
pack();
setVisible(true);
}
privateint calculateProduct(int[] numbers, intindex) {
if (index == numbers.length - 1) {
returnnumbers[index];
} else {
returnnumbers[index] * calculateProduct(numbers, index + 1);
}
}
publicstaticvoid main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
publicvoid run() {
new RecursiveProductCalculator();
}
});
}
}
Step by step
Solved in 4 steps with 5 images