HESAP MAKİNESİ(Calculator) JAVA DESKTOP APPLICATION
Genellikle programlama derslerinin vazgeçilmez ilk orneklerindendir fakat benim için pek öyle olmadı. Öğrencilerin yararlanabilmesi için klasik toplama,cıkarma,carpma,bölme,yuzde hesabı,1 bölüm, karakök vs.
Ekran görüntüsü (GUI olarak pek tatmin edici değil ama sonra düzeltirim)
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
SwingCalculator.java Kod: Kodu kopyalamak için üzerine çift tıklayın!
package calc;
/**
*
* @author CAN
*/
import javax.swing.*;
class SwingCalculator {
public static void main(String[] args) {
JFrame frame = new Calculator();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); //Frame i çağırıyoruz,gui kısmının gorunme ozelliğini katif ediyoruz
}
}
Calculator.java class ı Kod: Kodu kopyalamak için üzerine çift tıklayın!
/**
*
* @author CAN
*/
package Calc;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class Calculator extends JFrame {
private final Font BIGGER_FONT = new Font("monspaced", Font.PLAIN, 20);
private JTextField textfield;
private boolean number = true;
private String equalOp = "=";
private CalculatorOp op = new CalculatorOp();
public Calculator() {
textfield = new JTextField("0", 12);
textfield.setHorizontalAlignment(JTextField.RIGHT);
textfield.setFont(BIGGER_FONT);
ActionListener numberListener = new NumberListener();
String buttonOrder = "1234567890 "; //sayılar
JPanel buttonPanel = new JPanel(); //dizayn ıcın panale (sayıların uzerıen durdugu)
buttonPanel.setLayout(new GridLayout(4, 4, 4, 4));
for (int i = 0; i < buttonOrder.length(); i++) {
String key = buttonOrder.substring(i, i+1);
if (key.equals(" ")) {
buttonPanel.add(new JLabel(""));
} else {
JButton button = new JButton(key);
button.addActionListener(numberListener);
button.setFont(BIGGER_FONT); //butonların yazı fontları
buttonPanel.add(button); // butonların frame uzerındekı panel e eklenmesi
}
}
ActionListener operatorListener = new OperatorListener(); // operatorlerin cagrılması
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 4, 4, 4));
String[] opOrder = {"+", "-", "*", "/","=","C"}; //Operator işlemlerinin tutuldugu String array i
for (int i = 0; i < opOrder.length; i++) {
JButton button = new JButton(opOrder[i]);
button.addActionListener(operatorListener);
button.setFont(BIGGER_FONT);
panel.add(button);
}
JPanel pan = new JPanel();
pan.setLayout(new BorderLayout(4, 4));
pan.add(textfield, BorderLayout.NORTH );
pan.add(buttonPanel , BorderLayout.CENTER);
pan.add(panel , BorderLayout.EAST );
this.setContentPane(pan);
this.pack();
this.setTitle("Calculator"); // Panel baslıgı
this.setResizable(false);
}
private void action() {
number = true;
textfield.setText("0");
equalOp = "=";
op.setTotal("0");
}
class OperatorListener implements ActionListener { // operator fonksiyonları ve işlemleri
public void actionPerformed(ActionEvent e) {
if (number) {
action();
textfield.setText("0");
} else {
number = true;
String displayText = textfield.getText();
if (equalOp.equals("=")) { //eşittir operatoru
op.setTotal(displayText);
} else if (equalOp.equals("+")) { //toplama operatoru
op.add(displayText);
} else if (equalOp.equals("-")) { // cıkarma operatoru
op.subtract(displayText);
} else if (equalOp.equals("*")) { //carpma operatoru
op.multiply(displayText);
} else if (equalOp.equals("/")) { //bolme operatoru
op.divide(displayText);
}
textfield.setText("" + op.getTotalString()); //toplam işlemi
equalOp = e.getActionCommand();
}
}
}
class NumberListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String digit = event.getActionCommand();
if (number) {
textfield.setText(digit);
number = false;
} else {
textfield.setText(textfield.getText() + digit); //textfield icine yazılması
}
}
}
public class CalculatorOp {
private int total;
public CalculatorOp() {
total = 0;
}
public String getTotalString() {
return ""+total;
}
public void setTotal(String n) {
total = convertToNumber(n);
}
public void add(String n) {
total += convertToNumber(n);
}
public void subtract(String n) {
total -= convertToNumber(n);
}
public void multiply(String n) {
total *= convertToNumber(n);
}
public void divide(String n) {
total /= convertToNumber(n);
}
private int convertToNumber(String n) {
return Integer.parseInt(n);
}
}
}
Öğrenciler için güzel bir uygulama ve yeni baslayanlar için..
Keyifli Forumlar..