Java ile Yazılmış Bir Hesap Makinesi Örneği

Ahbap

Harbi Üye
Forum Üyesi
Katılım
29 Mayıs 2019
Mesajlar
8,562
Tepkime puanı
2
Kod:
mport 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 **** main(String[]   arg) {
                     new HesapMakinesi().setVisible(true);
                 }
                 
                 public HesapMakinesi() {
                     super("Hesap makinesi"); //Window  (pencere)   basligi
                     olusturGUI();
                       startFlashing();
                 }
                 
                 public ****   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 ****   windowClosing(WindowEvent we){
                                       System.exit(0);
                                       }
                                 }
                             );
                      // Bu kod parçasi ise penceremizi X butonu ile   kapatabilmemizi saglar.
                       
                 }
                 
                 public ****   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 ****   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 ****   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 **** startFlashing() {
                 Runnable flash = new Runnable() {
                     public **** 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();
                  }
                 
                 }
 

Benzer konular

Nutella

Harbi Üye
Bayan Üye
Özel Üye
Katılım
2 Ocak 2021
Mesajlar
9,432
Tepkime puanı
8
Cinsiyet
  1. Bayan
Takım
Galatasaray
Paylaşım için teşekkürler.
 
İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş