buttons display on screen
This commit is contained in:
34
src/main/java/com/mycompany/javacalculator/ButtonRow.java
Normal file
34
src/main/java/com/mycompany/javacalculator/ButtonRow.java
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||
*/
|
||||
package com.mycompany.javacalculator;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author mikayladobson
|
||||
*/
|
||||
public class ButtonRow extends JPanel {
|
||||
public ButtonRow() {}
|
||||
|
||||
public ButtonRow(JButton btn) {
|
||||
addToRow(btn);
|
||||
}
|
||||
|
||||
public ButtonRow(JButton[] buttons) {
|
||||
addToRow(buttons);
|
||||
}
|
||||
|
||||
public void addToRow(JButton btn) {
|
||||
this.add(btn);
|
||||
}
|
||||
|
||||
public void addToRow(JButton[] buttons) {
|
||||
for (JButton btn : buttons) {
|
||||
this.add(btn);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,44 +4,102 @@
|
||||
|
||||
package com.mycompany.javacalculator;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import com.mycompany.javacalculator.Operands.Operand;
|
||||
import java.util.Collection;
|
||||
import javax.swing.JButton;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author mikayladobson
|
||||
*/
|
||||
public class JavaCalculator implements ActionListener {
|
||||
private float storedNum = 0;
|
||||
private float receivedNum = 0;
|
||||
private String receivedData = "";
|
||||
private Operand operand = null;
|
||||
|
||||
private final JFrame frame;
|
||||
private final JLabel label;
|
||||
private final JPanel mainPanel;
|
||||
|
||||
private final JPanel calculatorScreen;
|
||||
private final JLabel screenText;
|
||||
|
||||
private final NumButton btn1;
|
||||
private final NumButton btn2;
|
||||
private final NumButton btn3;
|
||||
private final NumButton btn4;
|
||||
private final NumButton btn5;
|
||||
private final NumButton btn6;
|
||||
private final NumButton btn7;
|
||||
private final NumButton btn8;
|
||||
private final NumButton btn9;
|
||||
private final NumButton btn0;
|
||||
|
||||
private final OpButton btnPlus;
|
||||
private final OpButton btnMinus;
|
||||
private final OpButton btnMultiply;
|
||||
private final OpButton btnDivide;
|
||||
private final OpButton btnExponent;
|
||||
private final OpButton btnEquals;
|
||||
private final OpButton btnDecimal;
|
||||
|
||||
public JavaCalculator() {
|
||||
frame = new JFrame();
|
||||
label = new JLabel("Initial value");
|
||||
screenText = new JLabel("Initial value");
|
||||
|
||||
mainPanel = new JPanel();
|
||||
mainPanel.setBorder(BorderFactory.createEmptyBorder(100,100,100,100));
|
||||
mainPanel.setLayout(new GridLayout(4, 4));
|
||||
mainPanel.add(label);
|
||||
mainPanel.setLayout(new GridLayout(4, 4));
|
||||
|
||||
calculatorScreen = new JPanel();
|
||||
calculatorScreen.add(screenText);
|
||||
calculatorScreen.setBackground(Color.GRAY);
|
||||
|
||||
mainPanel.add(calculatorScreen);
|
||||
|
||||
btn1 = new NumButton(1, this);
|
||||
btn2 = new NumButton(2, this);
|
||||
btn3 = new NumButton(3, this);
|
||||
btn3 = new NumButton(3, this);
|
||||
btn4 = new NumButton(4, this);
|
||||
btn5 = new NumButton(5, this);
|
||||
btn6 = new NumButton(6, this);
|
||||
btn7 = new NumButton(7, this);
|
||||
btn8 = new NumButton(8, this);
|
||||
btn9 = new NumButton(9, this);
|
||||
btn0 = new NumButton(0, this);
|
||||
|
||||
mainPanel.add(btn1);
|
||||
mainPanel.add(btn2);
|
||||
mainPanel.add(btn3);
|
||||
btnPlus = new OpButton(Operand.ADD, this);
|
||||
btnMinus = new OpButton(Operand.SUBTRACT, this);
|
||||
btnMultiply = new OpButton(Operand.MULTIPLY, this);
|
||||
btnDivide = new OpButton(Operand.DIVIDE, this);
|
||||
btnExponent = new OpButton(Operand.EXPONENT, this);
|
||||
btnEquals = new OpButton(Operand.EQUALS, this);
|
||||
btnDecimal = new OpButton(Operand.DECIMAL, this);
|
||||
|
||||
NumButton[] numBtns = { btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0 };
|
||||
OpButton[] opBtns = { btnPlus, btnMinus, btnMultiply, btnDivide, btnExponent, btnEquals, btnDecimal };
|
||||
|
||||
RowFactory rowFactory = new RowFactory(numBtns);
|
||||
Collection<ButtonRow> btnRows = rowFactory.getRows();
|
||||
|
||||
for (ButtonRow row : btnRows) {
|
||||
mainPanel.add(row);
|
||||
}
|
||||
|
||||
rowFactory.setRows(opBtns);
|
||||
btnRows = rowFactory.getRows();
|
||||
|
||||
for (ButtonRow row : btnRows) {
|
||||
mainPanel.add(row);
|
||||
}
|
||||
|
||||
frame.add(mainPanel);
|
||||
frame.setTitle("Calculator");
|
||||
@@ -57,7 +115,7 @@ public class JavaCalculator implements ActionListener {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
NumButton source = (NumButton)e.getSource();
|
||||
label.setText(source.getText());
|
||||
JButton source = (JButton)e.getSource();
|
||||
screenText.setText(source.getText());
|
||||
}
|
||||
}
|
||||
|
||||
22
src/main/java/com/mycompany/javacalculator/OpButton.java
Normal file
22
src/main/java/com/mycompany/javacalculator/OpButton.java
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||
*/
|
||||
package com.mycompany.javacalculator;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import com.mycompany.javacalculator.Operands.Operand;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author mikayladobson
|
||||
*/
|
||||
public class OpButton extends JButton {
|
||||
private final Operand operand;
|
||||
|
||||
public OpButton(Operand operand, JavaCalculator calculator) {
|
||||
this.operand = operand;
|
||||
this.addActionListener(calculator);
|
||||
this.setText(Operands.toLabel(operand));
|
||||
}
|
||||
}
|
||||
45
src/main/java/com/mycompany/javacalculator/Operands.java
Normal file
45
src/main/java/com/mycompany/javacalculator/Operands.java
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||
*/
|
||||
package com.mycompany.javacalculator;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author mikayladobson
|
||||
*/
|
||||
public class Operands {
|
||||
public enum Operand {
|
||||
ADD, SUBTRACT, MULTIPLY, DIVIDE, EXPONENT,
|
||||
EQUALS, DECIMAL
|
||||
}
|
||||
|
||||
public static String toLabel(Operand input) {
|
||||
switch (input) {
|
||||
case ADD -> {
|
||||
return "+";
|
||||
}
|
||||
case SUBTRACT -> {
|
||||
return "-";
|
||||
}
|
||||
case MULTIPLY -> {
|
||||
return "*";
|
||||
}
|
||||
case DIVIDE -> {
|
||||
return "/";
|
||||
}
|
||||
case EXPONENT -> {
|
||||
return "^";
|
||||
}
|
||||
case DECIMAL -> {
|
||||
return ".";
|
||||
}
|
||||
case EQUALS -> {
|
||||
return "=";
|
||||
}
|
||||
default -> {
|
||||
throw new Error("Invalid operand input");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
47
src/main/java/com/mycompany/javacalculator/RowFactory.java
Normal file
47
src/main/java/com/mycompany/javacalculator/RowFactory.java
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||
*/
|
||||
package com.mycompany.javacalculator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import javax.swing.JButton;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author mikayladobson
|
||||
*/
|
||||
public class RowFactory {
|
||||
private Collection<ButtonRow> allRows;
|
||||
|
||||
public RowFactory() {
|
||||
allRows = new ArrayList<ButtonRow>();
|
||||
}
|
||||
|
||||
public RowFactory(JButton[] btns) {
|
||||
setRows(btns);
|
||||
}
|
||||
|
||||
public void setRows(JButton[] btns) {
|
||||
allRows = new ArrayList<ButtonRow>();
|
||||
int remaining = 0;
|
||||
|
||||
while (remaining < btns.length) {
|
||||
ButtonRow product = new ButtonRow();
|
||||
|
||||
int i = 0;
|
||||
while (remaining < btns.length && i < 3) {
|
||||
product.add(btns[remaining]);
|
||||
remaining++;
|
||||
i++;
|
||||
}
|
||||
|
||||
allRows.add(product);
|
||||
}
|
||||
}
|
||||
|
||||
public Collection<ButtonRow> getRows() {
|
||||
return this.allRows;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user