İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Java ile Hesap Makinesi

Bolu Beyi

0
İyinet Üyesi
Katılım
7 Nisan 2010
Mesajlar
2,895
Reaction score
36
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=new Button(isaretler);

tuslar.setFont(bigFont);

tuslar.addActionListener(this);

tusPaneli.add(tuslar);

}

/*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();

}
}
Kaynak
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst