Lunes pako nag problema ug code ani....nag libog nako....Para diritso na gaan nlng tamo ug example.
Ex:
3x4 = 12 or 2 x = 12.....diri ang problema....kanang 12 na answer, kung ako na tagaan ug lain napud na operation:example 12 + 5, d na mo hatag ug answer....hasta akong clear na button sa ikaduha na operation d napud mo gana....
Salamat daan sa mga master na motabang
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Font;
public class MyCalculator extends JFrame
{
JTextField txtField;
JButton[] btns = new JButton[10];
boolean startNum = true;
String previousOp = "=";
Font font = new Font("Arial",Font.PLAIN,30);
Calculator calc = new Calculator();
public static void main(String [] args)//main
{
new MyCalculator("My Calculator");
}
public MyCalculator(String title)
{
super(title);
txtField = new JTextField();
txtField.setHorizontalAlignment(JTextField.RIGHT);
txtField.setFont(font);
add(txtField);
ActionListener num = new Numbers(); // calling the ActionListener
String[] btnkeys ={"8","9","6","7","4","5","2","3","0","1", };// making buttons in a loop from the chars in a string.
JPanel btnPanel = new JPanel();
btnPanel.setLayout(new GridLayout(5,1)); //putting the numeric keys in grid layout
for (int i = 0; i < 10; i++)
{
btns[i] = new JButton(btnkeys[i]);
btns[i].addActionListener(num);
btnPanel.add(btns[i]);
}
ActionListener operator = new Operators();
JPanel opPanel = new JPanel();
opPanel.setLayout(new GridLayout(3,1));
String[] opOrder = {"+", "-", "*", "/", "=","C"};
for (int i = 0; i < opOrder.length; i++) {
JButton b = new JButton(opOrder[i]);
b.addActionListener(operator);
opPanel.add(b);
}
JPanel content = new JPanel();
content.setLayout(new BorderLayout(4, 4));
content.add(txtField, BorderLayout.NORTH );
content.add(btnPanel , BorderLayout.CENTER);
content.add(opPanel , BorderLayout.EAST);
setContentPane(content);
setSize(430, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
}//end of class
private void clear()
{
startNum = true;
calc.setTotal(txtField.getText());
previousOp = "=";
}
class Operators implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (startNum)
{
clear();
}
else
{
startNum = true;
String display = txtField.getText();
if (previousOp.equals("="))
{
calc.setTotal(display);
}
else if (previousOp.equals("+"))
{
calc.add(display);
}
else if (previousOp.equals("-"))
{
calc.subtract(display);
}
else if (previousOp.equals("*"))
{
calc.multiply(display);
}
else if (previousOp.equals("/"))
{
calc.divide(display);
}
txtField.setText("" + calc.getTotalString());
previousOp = e.getActionCommand();
}
}
}
class Numbers implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String toNum = e.getActionCommand(); // get text from button
if (startNum)
{
txtField.setText(toNum);
startNum = false;
}
else
{
txtField.setText(txtField.getText() + toNum);
}
}//method
}//class
}//end
-------------------------------------------------------------------------------------
public class Calculator
{
int total; // instance variable of current total
// constructor
public Calculator()
{
total = 0;
}
//getters and setters
public String getTotalString()
{
return "" + total;
}
public void setTotal(String num)
{
total = convertToNumber(num);
}
public void add(String num)
{
total = (total + convertToNumber(num));
}
public void subtract(String num)
{
total =(total - convertToNumber(num));
}
public void multiply(String num)
{
total =(total * convertToNumber(num));
}
public void divide(String num)
{
total = (total / convertToNumber(num));
}
public int convertToNumber(String num)
{
return Integer.parseInt(num);
}
}//calculator