This homework requires to finish the code shown below that p
This homework requires to finish the code shown below that produced the exact picture shown in here. No different code is possible but finishing where the code requires to do.
The code can be structured as Model, Veiw, Controller (MVC)
Thanks a lot
Starter code;
import java.awt.*;
// Using AWT\'s layouts
import java.awt.event.*;
// Using AWT\'s event classes and listener interfaces
import javax.swing.*;
// Using Swing\'s components and container
// A Swing application extends from javax.swing.JFrame
/* Need Javadoc documentation here * * */
public class SwingAdder extends JFrame {
private JTextField tfNumber1, tfNumber2, tfResult;
private JButton btnAdd, btnClear;
private int number1, number2, result;
// Constructor to set up UI components and event handlers public SwingAdder() {
// Swing components should be added to the content-pane of the JFrame.
Container cp = getContentPane();
// Set this Container to grid layout of 4 rows and 2 columns cp.setLayout(new GridLayout(4, 2, 10, 3));
// Components are added from left-to-right, top-to-bottom
cp.add(new JLabel(\"First Number \")); // at (1, 1)
tfNumber1 = new JTextField(10);
tfNumber1.setHorizontalAlignment(JTextField.RIGHT);
cp.add(tfNumber1); // at (1, 2)
// add your code here.......
// .......
btnAdd = new JButton(\"ADD\");
cp.add(btnAdd); // at (4, 1)
// use an anonymous (or lambda function) for the action listener
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
number1 = Integer.parseInt(tfNumber1.getText());
// add the rest of your code here......
}
});
btnClear = new JButton(\"CLEAR\");
cp.add(); // at (4, 2)
// use another anonymous function here for the clear button
btnClear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
// add your code here. }
});
// for the \"window-close\" button
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle(\"Swing Adder\"); setSize(300, 170);
setVisible(true);
}
// The entry main() method
public static void main(String[] args) {
// For thread safety, use the event-dispatching thread to construct UI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() { new SwingAdder(); // Let the constructor do the job
}
});
1) Using the starter code above (called SwingArithmitics) and then include buttons “+”, “-“, “*”, */”, “%”(remainder) and CLEAR to the calculator as shown in the image below.
Think about the design before you begin coding. How could you make it as MVC like as possible? What would happen to your design if the requirement suddenly changed to using floating point numbers instead of integers. How much code would you have to re-write. When you are done coding how much cut and paste code do you have? Could you have a better structure?
2) Make sure to check for illegal inputs (No floating point numbers, characters etc..) Warn the user with a dialog and clear the input so they can start over.
3) Make sure to catch overflows (i.e. numbers too large for the calculator.) Warn the user and clear the values so that they can start over.
Great many thanks
Swing Arithmetics E X First Number Second Number 321 Result 39483 CLEARSolution
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingAdder extends JFrame {
private JTextField tfNumber1, tfNumber2, tfResult;
private JButton btnAdd, btnClear, btnSub, btnMul, btnDiv, btnMod;
private int number1, number2, result;
private String str, num1, num2, ans;
//private static JDialog d;
// Constructor to set up UI components and event handlers
public SwingAdder() {
setTitle(\"Swing Adder\");
setSize(300, 400);
setVisible(true);
// Swing components should be added to the content-pane of the JFrame.
JPanel cp = new JPanel();
getContentPane().add(cp);
// Set this Container to grid layout of 4 rows and 2 columns
GridLayout layout = new GridLayout(6,2);
layout.setHgap(10);
layout.setVgap(10);
cp.setLayout(layout);
// Components are added from left-to-right, top-to-bottom
cp.add(new JLabel(\"First Number \"));
tfNumber1 = new JTextField(10);
//tfNumber1.setHorizontalAlignment(JTextField.RIGHT);
cp.add(tfNumber1);
cp.add(new JLabel(\"Second Number \"));
tfNumber2 = new JTextField(10);
//tfNumber1.setHorizontalAlignment(JTextField.RIGHT);
cp.add(tfNumber2);
cp.add(new JLabel(\"Result \"));
tfResult = new JTextField(10);
tfResult.setEditable(false);
//tfNumber1.setHorizontalAlignment(JTextField.RIGHT);
cp.add(tfResult);
btnAdd = new JButton(\"+\");
cp.add(btnAdd);
btnSub = new JButton(\"-\");
cp.add(btnSub);
btnMul = new JButton(\"*\");
cp.add(btnMul);
btnDiv = new JButton(\"/\");
cp.add(btnDiv);
btnMod = new JButton(\"%\");
cp.add(btnMod);
btnClear = new JButton(\"CLEAR\");
cp.add(btnClear);
num1 = tfNumber1.getText();
num2 = tfNumber2.getText();
try
{
if(num1.contains(\".\") || num1.contains(\".\"))
{
ans = \"Contains float\";
}
Integer.parseInt(num1);
Integer.parseInt(num2);
}
catch(NumberFormatException ex)
{
ans = \"Contains Character\";
}
// use an anonymous (or lambda function) for the action listener
btnAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
number1 = Integer.parseInt(tfNumber1.getText());
number2 = Integer.parseInt(tfNumber2.getText());
result = number1 + number2;
str = Integer.toString(result);
tfResult.setText(str);
}
});
btnSub.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
number1 = Integer.parseInt(tfNumber1.getText());
number2 = Integer.parseInt(tfNumber2.getText());
result = number1 - number2;
str = Integer.toString(result);
tfResult.setText(str);
}
});
btnMul.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
number1 = Integer.parseInt(tfNumber1.getText());
number2 = Integer.parseInt(tfNumber2.getText());
result = number1 * number2;
str = Integer.toString(result);
tfResult.setText(str);
}
});
btnDiv.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
number1 = Integer.parseInt(tfNumber1.getText());
number2 = Integer.parseInt(tfNumber2.getText());
result = number1 / number2;
str = Integer.toString(result);
tfResult.setText(str);
}
});
btnMod.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
number1 = Integer.parseInt(tfNumber1.getText());
number2 = Integer.parseInt(tfNumber2.getText());
result = number1 % number2;
str = Integer.toString(result);
tfResult.setText(str);
}
});
btnClear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
tfNumber1.setText(\"\");
tfNumber2.setText(\"\");
tfResult.setText(\"\");
}
});
tfNumber1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
if(ans == \"Contains float\")
{
JOptionPane.showMessageDialog(null, ans);
}
else if(ans == \"Contains Character\")
{
JOptionPane.showMessageDialog(null, ans);
}
tfNumber1.setText(\"\");
tfNumber2.setText(\"\");
tfResult.setText(\"\");
}
});
tfNumber2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
if(ans == \"Contains float\")
{
JOptionPane.showMessageDialog(null, ans);
}
else if(ans == \"Contains Character\")
{
JOptionPane.showMessageDialog(null, ans);
}
tfNumber1.setText(\"\");
tfNumber2.setText(\"\");
tfResult.setText(\"\");
}
});
// for the \"window-close\" button
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// For thread safety, use the event-dispatching thread to construct UI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() { new SwingAdder(); // Let the constructor do the job
}
});
//new SwingAdder();
}
}




