Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.EventQueue;
- import java.awt.Font;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.ButtonGroup;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JPanel;
- import javax.swing.JRadioButton;
- import javax.swing.border.EmptyBorder;
- public class CalculatorFrame extends JFrame implements ActionListener{
- private JPanel contentPane;
- private JMenu jMenuFile, jMenuHelp;
- private JPanel jMaster, jplBackSpace, jplControl;
- private JLabel jLabelOuput;
- private JButton JbnButtons[];
- private JRadioButton JrnButtons[];
- private boolean firstInput = true;
- private String numStr1 = "0";
- private String numStr2 = "0";
- Font f12 = new Font("Times New Roman", 0, 12);
- Font f121 = new Font("Times New Roman", 1, 12);
- private String op;
- /**
- * Launch the application.
- */
- public static void main(String[] args) {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- try {
- CalculatorFrame frame = new CalculatorFrame();
- frame.setVisible(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- /**
- * Create the frame.
- */
- public CalculatorFrame() {
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setBounds(100, 100, 450, 300);
- contentPane = new JPanel();
- contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
- contentPane.setLayout(new BorderLayout(0, 0));
- setContentPane(contentPane);
- // MEnu File
- jMenuFile = new JMenu("File");
- // MEnu Help
- jMenuHelp = new JMenu("Help");
- // Menu Bar
- JMenuBar mb = new JMenuBar();
- mb.add(jMenuFile);
- mb.add(jMenuHelp);
- setJMenuBar(mb);
- // frame componant
- jMaster = new JPanel();
- jLabelOuput = new JLabel("0");
- // add our componante to frame
- getContentPane().add(jLabelOuput, BorderLayout.NORTH);
- JbnButtons = new JButton[25];
- JrnButtons = new JRadioButton[4];
- ButtonGroup bg=new ButtonGroup();
- JrnButtons[0] = new JRadioButton("Base 2");
- JrnButtons[1] = new JRadioButton("Base 8");
- JrnButtons[2] = new JRadioButton("Base 10");
- JrnButtons[3] = new JRadioButton("Base 16");
- bg.add(JrnButtons[0]);
- bg.add(JrnButtons[1]);
- bg.add(JrnButtons[2]);
- bg.add(JrnButtons[3]);
- for(int i = 0; i<= 9; i++) {
- JbnButtons[i] = new JButton(String.valueOf(i));
- }
- // Create operator Jbuttons
- JbnButtons[10] = new JButton("+/-");
- JbnButtons[11] = new JButton(".");
- JbnButtons[12] = new JButton("=");
- JbnButtons[13] = new JButton("/");
- JbnButtons[14] = new JButton("*");
- JbnButtons[15] = new JButton("-");
- JbnButtons[16] = new JButton("+");
- JbnButtons[17] = new JButton("sqrt");
- JbnButtons[18] = new JButton("1/x");
- JbnButtons[19] = new JButton("%");
- jplBackSpace = new JPanel();
- jplBackSpace.setLayout(new GridLayout(1, 1, 2, 2));
- JbnButtons[20] = new JButton("Backspace");
- jplBackSpace.add(JbnButtons[20]);
- jplControl = new JPanel();
- jplControl.setLayout(new GridLayout(1, 2, 2, 2));
- JbnButtons[21] = new JButton(" CE ");
- JbnButtons[22] = new JButton("C");
- JbnButtons[23] = new JButton("A");
- JbnButtons[24] = new JButton("B");
- jplControl.add(JbnButtons[21]);
- jplControl.add(JbnButtons[22]);
- // Setting all Numbered JButton's to Blue. The rest to Red
- for (int i = 0; i < JbnButtons.length; i++) {
- JbnButtons[i].setFont(f12);
- if (i < 10)
- JbnButtons[i].setForeground(Color.blue);
- else
- JbnButtons[i].setForeground(Color.red);
- }
- JPanel jPLButtons = new JPanel();
- jPLButtons.setLayout(new GridLayout(4, 5));
- // add button to the jPLButtons
- for(int i = 7; i<=9; i++) {
- jPLButtons.add(JbnButtons[i]);
- }
- // add button / and sqrt
- jPLButtons.add(JbnButtons[13]);
- jPLButtons.add(JbnButtons[17]);
- // Second row
- for (int i = 4; i <= 6; i++) {
- jPLButtons.add(JbnButtons[i]);
- }
- // add button * and x^2
- jPLButtons.add(JbnButtons[14]);
- jPLButtons.add(JbnButtons[18]);
- // Third row
- for (int i = 1; i <= 3; i++) {
- jPLButtons.add(JbnButtons[i]);
- }
- //adds button - and %
- jPLButtons.add(JbnButtons[15]);
- jPLButtons.add(JbnButtons[19]);
- //Fourth Row
- // add 0, +/-, ., +, and =
- jPLButtons.add(JbnButtons[0]);
- jPLButtons.add(JbnButtons[10]);
- jPLButtons.add(JbnButtons[11]);
- jPLButtons.add(JbnButtons[16]);
- jPLButtons.add(JbnButtons[12]);
- JPanel jRDButton = new JPanel();
- jRDButton.setLayout(new GridLayout(1, 4));
- jRDButton.add(JrnButtons[0]);
- jRDButton.add(JrnButtons[1]);
- jRDButton.add(JrnButtons[2]);
- jRDButton.add(JrnButtons[3]);
- JPanel jHexButton = new JPanel();
- jHexButton.setLayout(new GridLayout(1, 6 , 2 , 2));
- jHexButton.add(JbnButtons[23]);
- jHexButton.add(JbnButtons[24]);
- // JPANEL MASET
- jMaster.setLayout(new BorderLayout());
- jMaster.add(jPLButtons, BorderLayout.SOUTH);
- jMaster.add(jRDButton, BorderLayout.NORTH);
- jMaster.add(jplBackSpace, BorderLayout.WEST);
- jMaster.add(jplControl, BorderLayout.EAST);
- jMaster.add(jHexButton);
- // add component to frame
- getContentPane().add(jMaster, BorderLayout.SOUTH);
- requestFocus();
- //add listener to button
- for(int i = 0; i< JbnButtons.length; i++) {
- JbnButtons[i].addActionListener(this);
- }
- for(int i = 0; i< JrnButtons.length; i++) {
- JrnButtons[i].addActionListener(this);
- }
- JrnButtons[2].setSelected(true);
- }
- @Override
- public void actionPerformed(ActionEvent e) {
- // TODO Auto-generated method stub
- String resultStr="0";
- String str = String.valueOf(e.getActionCommand());
- System.out.println(str);
- switch(str)
- {
- case "0": case "1": case "2":
- case "3": case "4": case "5":
- case "6": case "7": case "8":
- case "9": if(firstInput)
- {
- numStr1 = numStr1 + str;
- jLabelOuput.setText(numStr1);
- }
- else
- {
- numStr2 = numStr2 + str;
- jLabelOuput.setText(numStr2);
- }
- break;
- case "+":
- case "-":
- case "*":
- case "%":
- case "/": op = str;
- firstInput = false;
- break;
- case "=":
- if (numStr1 != null && numStr2 != null && op != null) {
- resultStr = String.valueOf(evaluate());
- jLabelOuput.setText(resultStr);
- numStr1 = resultStr;
- numStr2 = "";
- firstInput = true;
- }
- else {
- resultStr = numStr1;
- }
- break;
- case "C": jLabelOuput.setText("");
- numStr1 = "0";
- numStr2 = "0";
- firstInput = true;
- break;
- case "1/x":
- op = str;
- numStr2 = "0";
- firstInput = true;
- break;
- case "+/-":
- numStr1=String.valueOf(-Double.parseDouble(numStr1));
- jLabelOuput.setText(numStr1);
- firstInput = true;
- break;
- case "sqrt":
- numStr1=String.valueOf(Math.sqrt(Double.parseDouble(numStr1)));
- jLabelOuput.setText(numStr1);
- firstInput = true;
- break;
- case ".":
- numStr1=numStr1.concat(".");
- jLabelOuput.setText(numStr1);
- break;
- }
- }
- private double evaluate() {
- double resultat=0;
- double x = Double.parseDouble(numStr1);
- double y = Double.parseDouble(numStr2);
- switch(op)
- {
- case "+": resultat = x + y; break;
- case "-": resultat = x - y; break;
- case "*": resultat = x * y; break;
- case "/": resultat = x / y; break;
- case "%": resultat = x % y; break;
- case "1/x": resultat = 1 / x; break;
- }
- return resultat;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement