1. MUSTAFA KEMAL N聴VERS聴TES聴
HASSA MESLEK YKSEKOKULU
Hal脹 Y脹kama Takip Otomasyonu R-3
Sistem Analizi ve Tasar脹m Dersi Bitirme
Projesi
RECEP GLL
108104020
2. Proje Tasar脹m脹 ve Sonradan Eklenen Kodlar
Ana pencere tasarlan脹rken u ad脹mlar izlendi:
1. Ana pencerenin oluturulmas脹 ve 巽al脹t脹r脹lmas脹.
2. Metotlara b旦lme ve constructerdan 巽a脹r脹lmas脹.
3. Pencere i巽erisinde 旦gelerin oluturulmas脹 ve yerletirilmesi.
4. Action 旦zellii verme.
3. Ana Pencerenin Oluturulmas脹 ve al脹t脹r脹lmas脹
Ana pencere Java programlama dilinin swing k端t端phanesinden
JFrame s脹n脹f脹 miras (extends) al脹narak oluturuldu. Miras alma ilemi
sayesinde program yaz脹l脹rken kodlar uzun bir ekilde s脹ralanmad脹 ve yaz脹m
kolayl脹脹 salanm脹 oldu.
4. Yan tarafta JFramenin nas脹l oluturulaca脹 g旦sterilmekte- dir.
setTitle ile penceremize bir bal脹k eklenebilir, setSize ile boyutu,
setLocationRelativeTo ile penceremizin ekran脹n hangi konumunda
a巽脹laca脹n脹 ayarlayabiliriz. setResizable ile yeniden boyutland脹rma 旦zellii
deitirilebilir, setVisible ile pencerenin g旦r端n端rl端端 salan脹r ancak; bu kod
yaz脹lmaz veya false yaz脹l脹rsa pencere 巽al脹脹r fakat g旦r端nmez.
setDefaultCloseOperation pencerenin kapat脹ld脹脹 zaman ger巽ekleecei
ilemi belirleriz.
5. Metotlara B旦lme ve Constructer dan a脹rma
Constructer: Program 巽al脹t脹r脹ld脹脹nda
derleyicinin ilk 巽al脹t脹raca脹 metottur. Bu
y端zden bu metot ne kadar k脹sa olursa o kadar
elverili olur.
Yan tarafta g旦sterildii gibi kodlar
farkl脹 kod bloklar脹na b旦l端nebilir. Bu saye- de
kodlar uzamaz ve deiiklik yap脹lmak
istendiinde arad脹脹m脹z脹 bulmakta zorlanmay脹z.
S脹n脹f脹m脹z JFrame s脹n脹f脹ndan miras
al脹nm脹t脹r. Penceremiz initJFrame metodunda
oluturuldu ve constructer dan initJframe();
eklinde 巽a脹r脹ld脹. Bu sayede Java programlama
dilinin kod yaz脹m脹 s脹ras脹nda bize salam脹
olduu kolayl脹脹da g旦rm端 olduk.
6. Pencere 聴巽erisindeki gelerin Oluturulmas脹 ve Yerletirilmesi
Yukar脹da bir tablonun nas脹l oluturulduu anlat脹lmaktad脹r. Ben
tablomu olutururken s端tun isimlerini String olarak haliListesi dizisine
atad脹m. Daha sonra tableModelOne ad脹nda bir tablo modeli oluturdum ve
string dizisini bu modele ekledim. Ard脹ndan tableJTable ad脹nda tablo
oluturup modeli bu tabloya ekledim. paneJScrollPane ad脹nda bir scroll
oluturup tablomu scrolla ekledim. 20 sat脹rl脹k bir tablo oluturulmu ve panele
eklenmeye haz脹r vaziyettedir.
7. Buton Ekleme ve Action Oluturma
Bu butonu oluturmak i巽in;
JButton addCustemerJButton = new JButton(M端teri Ekle); kodlar脹n脹
yazmak gerekir. Ard脹ndan
addCustemerJButton.addActionListener(new ActionListener)
{
public void actionPerformed(ActionEvent arg0) {
new AddCustemerGui();
}
});
8. Soru Penceresi Oluturma
Tamam butonuna t脹kland脹脹nda Bu M端teri 聴巽in Hal脹 Kayd脹 Yapmak
聴stiyor musunuz? eklinde bir soru penceresi a巽脹lmaktad脹r. Bu soru
penceresini oluturan kodlar unlard脹r;
9. Object[] options = { "Evet", "Hay脹r!" };
int n = JOptionPane.showOptionDialog(null,"Bu M端teri 聴巽in Hal脹 Kay脹d脹 Yapmak 聴stiyor
musunuz?", "Kay脹t Yap脹ls脹n m脹?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, options,
options[0]);
Yukar脹da ki kodlar sayesinde bir YES_NO_OPTION soru penceresi yap脹l脹r.
Ayr脹ca pencerede istediimiz her eyi deitirebiliriz. Evete bas脹ld脹脹nda m端teri
ad脹na bir sipari penceresi a巽脹l脹r. 聴ptal ise kay脹t ilemi yap脹lmadan 巽脹k脹 yapar. Bunun
i巽in bir if karar yap脹s脹 yap脹lmal脹d脹r bu da u ekilde olur;
if (n == 0) {
EnterCarpetGui enterCarpet = new EnterCarpetGui();
}
else if (n == 1)
{
dispose();
}
10. Yap脹lan Hatalar ve D端zeltme Yollar脹
import java.awt.BorderLayout; Yan tarafta javan脹n dier s脹n脹flardan
import java.awt.Color; veri almas脹n脹 salayan import kodlar脹ndan
import java.awt.event.ActionEvent; baz脹lar脹 vard脹r. Baz脹lar脹 dedim 巽端nk端
import java.awt.event.ActionListener; ezberlenmesi kolay olmayacak kadar fazlad脹r.
import javax.swing.BorderFactory; Bu y端zden ctrl+shift+O kullan脹larak gerekli
import javax.swing.ImageIcon; olan importlar脹 巽a脹rabilir kullan脹lmayan
import javax.swing.JButton; importlar脹 silebiliriz. rnein;
import javax.swing.JFrame;
import javax.swing.JMenu; JPanel panel = new JPanel(); kodalar脹n脹
import javax.swing.JMenuBar; yazd脹脹m脹z zaman import
import javax.swing.JMenuItem; jawax.swing.JPanel; importu gelir. Bu kod
import javax.swing.JOptionPane; yaz脹lmad脹脹 zaman veya k脹sa yolla
import javax.swing.JPanel; 巽a脹r脹lmad脹脹 zaman kod bloumuzda
eklinde hata oluur.
11. Metot Hatalar脹
Ayn脹 s脹n脹f i巽erisinde farkl脹 metotlar kullan脹rken, metodumuzun bir ey
d旦nd端rmesini isteyebiliriz. Fakat bunu sonradan yani t端m metodu yazd脹ktan sonra
yapmay脹 d端端n端p metodumuzun sonuna return null; yazabiliriz. Fakat daha
sonradan unutulmamal脹d脹r ki yaz脹lan null yani bo deer yerine d旦nd端r端lmesi
gereken se巽enek yaz脹lmal脹d脹r. Aksi takdirde yaz脹lan metot sadece kodlar aras脹nda
sadece kalabal脹k yapar, bir ie yaramaz.
Bir dier yapt脹脹m metot hatas脹 ise yazd脹脹m metodu farkl脹 bir s脹n脹ftan veya
dier bir metottan 巽a脹rmay脹 unutmakt脹r. Yaz脹lan metot deer d旦nd端rmekte fakat
dier metot veya s脹n脹flardan 巽a脹r脹lmad脹脹 i巽in alg脹lanmamaktad脹r.