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(); } } |
2 haneli sayilari yazamiyoruz galiba 🙁
Baris, yeni bir proje olustur (ismi önemli degil). Bu projeye sag tikla ve java class ekle, isim olarak HesapMakinesi de. Açilacak olan editördeki bütün yazilari sil ve makaleyi oraya aynen kopyala. Ayrintili sorularin için forum sayfamizi kullanabilirsin.
Bize Ödev Verildi Ama Daha Java Hakkinda Hiçbirsey Bilmiyoruz. Hesap Makinesi Yapmamiz Istendi. Nasil Yapabilirim? Bu Kodlari Nereye Yapistiracagim. JDK ve Netbeani Indirdim. Simdiden Tesekkür Ederim.
Dikkat ve uyariniz için tesekkürler.
Kendim, kodlari Flamanca (Hollandaca) kelimelerle yaziyorum; türkçe makaleler için çeviri yaparken bazen böyle kazalar oluyor .
new HesapMakinesi().setVisible(true);