Ana içeriğe atla

Java ile Yazilmis Bir Hesap Makinesi Örnegi

Java ile basit bir hesap makinesi programini sizlerle paylasmak istiyorum:

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//Programimiz için gerekli bazi paketleri ‘import’ ettik.

public class HesapMakinesi extends Frame implements ActionListener {
    Label     display;
    Button    onOff;
    Button[]  tuslar;
    Frame     parent;
    long oncekiSayi = 0;
    char operatie = '=';
    boolean yeniGirdi=true;
    Font bigFont = new Font("Arial",Font.PLAIN,24); //Tuslar ve ekranin görünümü için bir 'font' tanimliyoruz
   
    public static void main(String[] arg) {
        new HesapMakinesi().setVisible(true);
    }
   
    public HesapMakinesi() {
        super("Hesap makinesi"); //Window  (pencere) basligi
        olusturGUI();
        startFlashing();
    }
   
    public void olusturGUI() {
        parent=this;
        display = new Label(" ",Label.RIGHT);
        display.setBackground(Color.yellow);
        display.setFont(bigFont);
       
        onOff = new Button("On");
        onOff.addActionListener(this);
        onOff.setFont(bigFont);
       
        Panel tusPaneli = new Panel(); //Bu paneli tuslarimisi yerlestirmek için kullanacagiz.
        tusPaneli.setLayout(new GridLayout(4,4));
        String[] isaretler = {"9","8","7""/",
                           "6","5","4""*",
                           "3","2","1""-",
                           "0","C","=""+" };
        tuslar = new Button[16];
        //Önce 'isaretler' adinda bize lazim olan isaretleri iceren bir String dizi olusturduk.
      
        for (int b=0; b<16; b++) {
            tuslar[b]=new Button(isaretler[b]);
            tuslar[b].setFont(bigFont);
            tuslar[b].addActionListener(this);
            tusPaneli.add(tuslar[b]);
            }
        /*Tuslarimizi (on/of hariç) daha önce hazirladigimiz 'tusPaneli'ne for döngüsü yardimi ile tek tek          yerlestiriyor
          ve hepsini ActionListener'e bildiriyoruz. ActionListener arayüzü sayesinde tuslarimizin ne  yapmasi herektigini
          belirleyebilecegiz*/
              
        this.add(display,BorderLayout.NORTH);
        this.add(tusPaneli,BorderLayout.CENTER);
        this.add(onOff,BorderLayout.SOUTH);
        /*Ekranimizi (display), küçük tuslarimizi yapistirdigimiz tusPanel'imizi ve on/off tusumuzu container'e (this)
          ekliyoruz */
        this.setSize(250,250);
       
        this.addWindowListener(new WindowAdapter() {
            @Override
                    public void windowClosing(WindowEvent we){
                        System.exit(0);
                        }
                    }
                );
         // Bu kod parçasi ise penceremizi X butonu ile kapatabilmemizi saglar.
         
    }
   
    public void actionPerformed(ActionEvent evt) {
        /* ActionListener arayüzünden 'implemente' ettigimiz ve tuslarimizin hareketlerini denetleyip
         * verdigimiz kpmotlara göre ne yapilmasi gerektiginin anlatildigi sinifimiz. */
        
        if ( onOff==evt.getSource() ) { //örnegin burada anlatilmak istenen onOff tusuna basildiginda...
            doOnOff();
            return;
            }
        if (onOff.getLabel().equals("On")) /*onOff butonunun Label'i "On" ise..
                                                      *Dikkat! Java'da String ifadenin karsilastirilmasi == ile degil
                                                     * equals(); yordami ile yapilir. */
            return;
       
        char input = evt.getActionCommand().charAt(0); 
        System.out.println("input:"+input);
       
        if (input>='0' & input<='9' ) {
             if (display.equals("0") || yeniGirdi)
                display.setText(input+"");
             else
                display.setText(display.getText()+input);
             return;
            }

        if (input=='C') {
            oncekiSayi=0;
            operatie='=';
            yeniGirdi=true;
            display.setText("0");
            return;
            }  
       
        String tekst="0"+display.getText().trim();
        long sayi = Long.parseLong(tekst);

        hesapla(input,sayi);
        display.setText(oncekiSayi+"");
        }
     
    public void hesapla(char input, long sayi) {
        System.out.println("hesapla:"+input+"|"+sayi);
        switch (operatie) {
            case '=' : oncekiSayi= sayi; break;
            case '+' : oncekiSayi+=sayi; break;
            case '-' : oncekiSayi-=sayi; break;
            case '*' : oncekiSayi*=sayi; break;
            case '/' : oncekiSayi/=sayi; break;
            }          
        operatie=input;
        yeniGirdi=true;
        }
   
      
    public void doOnOff() {
        yeniGirdi=true;
        if ( onOff.getLabel().equals("On") ) {
            onOff.setLabel("Off");
            display.setBackground(Color.yellow);
            display.setText("0");
            return;
            }
        onOff.setLabel("On");
        display.setText(" ");
        startFlashing();
        }

public void startFlashing() {
    Runnable flash = new Runnable() {
        public void run() {
            boolean yellow=true;
            while(onOff.getLabel().equals("On")) {
                if (yellow) display.setBackground(Color.green);
                       else display.setBackground(Color.yellow);
                yellow=!yellow;
                try { Thread.sleep(600); } catch (Exception ex) { }  
                // end while                   
            // end run
        }; // end Runnable
      new Thread(flash).start();
     }
   
    }

Yorumlar

  1. How to Make Money From BetMGM? | Work-to-Earn Money
    The main reason I do so 바카라 양방 사이트 is to make money luckyclub.live on the NFL with betting sites. หาเงินออนไลน์ BetMGM 바카라사이트 has already started offering online sports betting 강원 랜드 바카라 to its loyal

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

Linux En Az Sistem Gereksinimi İsteyen Dağıtımları Değerlendirilmesi

Linux İşletim Sisteminin Dağıtımlarının En az sistem gereksinimi isteyen sürümleri, değerlendirilmesi aşağıdadır, Değerlendirilen dağıtımlar şunlardır: Ubuntu Xubuntu Lubuntu Damn Small Linux Linux Mint Fedora Opensuse Debian Rat Hat Suse Linux Suse Linux Sistem Gereksinimleri: Pentium 1-4 ya da Xeon; AMD Duron, Athlon (XP, MP ya da 64), Sempron ya da Opteron 256MB RAM 500MB boş disk alanı 800x600 yada üstü resolution Rat Hat Memory Gerekli: 4 GB of memory Önerilen: 8 GB of memory CPU Gerekli: Intel Core processor, 2.4GHz, 512K cache or equivalent Önerilen: Intel multi-core processor, 2.4GHz dual processor, 512K cache or equivalent Storage 5 GB alan temel kurulum için. 40 GB alan Channel başına. 10 GB alan Cache dizini için(/var/cache/rhn) Disk yapılandırması olarak Raid 5 tavsiye edilir. Database İlk kurulum için 12 GB alan önerilir. Client ve channel hesaplamaları ise, 250 KB alan client system başına, 500 KB alan çhannel başına, ayrıca 230 KB channel da...

( C#) Ders 4 - Diziler, Çok Boyutlu Diziler, Düzenli ve Düzensiz Çok Boyutlu Diziler Nasil Kullanilir. foreach Döngüsünün Kullanimi.

C# da Diziler Diziler için ayni tipteki verilerin tutuldugu bir koleksiyon diyebiliriz. Örnegin integer verinin bir yigin seklinde tutulmasi için dizileri kullaniriz. C# da diziler referans tipinde degiskenlerdendir. C# da tanimlanan tüm diziler System.Array sinifindan türemis bir nesnedir. C# da diziler asagidaki gibi tanimlanir. ? 1 <veri tipi>[] <degisken ismi> = new <veri tipi>[<dizinin boyutu>]; 10 adet integer veri tutan bir dizinin tanim ise ? 1 int [] integerDizi = new int [10]; Bir dizinin boyutlari sabittir ve kullanilmadan önce belirlenmelidir. Dizi boyutunu belirlemek için baska bir degiskende kullanabilirsiniz. ? 1 2 int boyut = 10; int [] integerDizi = new int [boyut]; Diziyi tanimlama ve baslangiç degerlerini atama islemini ayri satirlardada yapabilirsiniz. ? 1 2 int [] integerDizi; integerDizi = new int [10]; Ayrica dizileri tanimlarken, dizi içine atmak istedigin...

(C#) Ders 2 - Degisken Tipleri, Degisken Tanimlama ve Operatörler

C# Hakkinda Temel Bilgiler Bu dersimizde C# dili hakkinda temel bilgiler ögrenecegiz. Biraz açarsak bu dersimizde veri tipleri, degiskenler ve operatörleri nasil kullanacagimizla ilgili bilgiler verecegiz. Temel Veri Tipleri ve CTS(Common Type System) Karsiliklari C# da iki çesit veri tipi vardir: Deger Tipleri (Value type) Referans Tipleri(Reference Type) Degiskenler bellekte bulunan verilerdir. Bir degiskeni kullandigimiz zaman o degiskenin bellekte bulundu yerdeki bilgiyi kullaniriz. Deger tipleri veriyi direk olarak bellek bölgesinden alirken referans tipleri baska bir nesneye referans gösterirler. Yani referans tipleri içinde veri degil adres bilgisi tutarlar. Veri tipleri stack dedigimiz bellek bölgesinde tutulurlar, referans tipleri ise heap bellek bölgesinde saklanirlar. int, double, float gibi veri tipleri deger tiplerine örnek gösterilebilir. Herhangi bir sinif türü ise referans tipine örnek gösterilebilir. Deger tipleri birbirine esitlenirken degiskenin ba...