DEV-C++ Uygulamasının
java swing ile arayüzünü nasıl oluşturduk, hangi companentleri nasıl kullandık
bunları anlatacağım.
· private void init();
· private JPanel initPanel();
· private JMenuBar initJMenuBar();
· private void init();
· private JPanel initPanel();
· private JMenuBar initJMenuBar();
Calistir.java sayfamızda Constructor
metodu ile AnaPencereGui sayfamızdan yeni bir nesne oluşturarak Calistir.java
dosyamız çalıştığı anda bir AnaPencereGui nesnesi oluşup çalışmaya
başlayacaktır. Main metodunu Calistir.java sayfamıza yazıp çalıştırılabilir bir
ortam oluşturuyoruz. Bilindiği gibi main olmadan uygulamamız çalışmaz.
AnaPencereGui.java sayfamızda mimariye uyması açısından constructor haricinde
kendi kullandığımız birkaç metot vardır. Bu metotlar şunlardır.
Öncelikle Constructor nedir? Constructor
bir sayfadan yeni bir nesne oluşturulduğu anda çalışacak ilk metottur.
init() metodu hiçbir değer çağrıldığında
hiçbir değer döndermez. Kullandığımız pencerenin (AnaPencereGui için JFrame
kullanıldı.) özelliklerinin belirtildiği metottur.
initPanel() metodu bir JPanel
dönderir. anaPencereGui nesnesinin en temelde kullanılan panelini oluşturur.
Daha sonra panel üzerinde gösterilecek tüm componentler bu panel üzerine
doğrudan veya ek paneller yardımı ile eklenir.
initJMenuBar() metodu bir JMenuBar dönderir.
Oluşturduğumuz menüleri bu metot içerisinde JMenuBar’a ekleyerek kullanacağımız
yere (init() metoduna) göndeririz.
Calistir.java sayfamızı açıklayalım.
/*-------------------------------------Calistir.java--------------------------------------------*/package tr.org.hassamyo.hakan.test; /* paket adı */
import javax.swing.SwingUtilities;
…public class Calistir {
public Calistir() {
import javax.swing.SwingUtilities;
…public class Calistir {
public Calistir() {
try {
UIManager.setLookAndFeel(UIManager.getInstalledLookAndFeels()[3].getClassName()); /* LookAndFeel (Tema) ekliyoruz */
}
new AnaPencereGui();
/* Bulunduğumuz sayfanın yeni ve tek seferlik kullanılabilecek bir nesnesini oluşturuyoruz */
UIManager.setLookAndFeel(UIManager.getInstalledLookAndFeels()[3].getClassName()); /* LookAndFeel (Tema) ekliyoruz */
}
new AnaPencereGui();
/* Bulunduğumuz sayfanın yeni ve tek seferlik kullanılabilecek bir nesnesini oluşturuyoruz */
}
public static void main(String[] args) {
/*swing bileşenleri olay güdümlü bileşen olduklarından uygulamanın ana kanalıyla deği,
olay gönderme kanalıyla oluşturulmalıdır. */
olay gönderme kanalıyla oluşturulmalıdır. */
SwingUtilities.invokeLater(new
Runnable() {
public
void run() {
new Calistir();
/* Bulunduğumuz sayfanın yeni ve tek seferlik kullanılabilecek bir
nesnesini oluşturuyoruz */
/* Bulunduğumuz sayfanın yeni ve tek seferlik kullanılabilecek bir
nesnesini oluşturuyoruz */
}
});
}/*main metodu*/
}/*Calistir class
sonu*/
AnaPencereGui.java sayfamızı açıklayalım
/*-------------------------------AnaPencereGui.java--------------------------------------*/
package tr.org.hassamyo.hakan.ui; /* paket
adı */
import java.awt.BorderLayout; /* import
dosyaları*/
…
public class AnaPencereGui extends JFrame {
public AnaPencereGui() { /*Contructor metodu*/
init();
}/*Constructor sonu*/
public class AnaPencereGui extends JFrame {
public AnaPencereGui() { /*Contructor metodu*/
init();
}/*Constructor sonu*/
private void init() {
setJMenuBar(initJMenuBar());
/* Oluşturduğumuz
JMenuBarı initJMenuBar() metodu ile alıp penceremize
ekliyoruz */
add(initPanel());
/* Oluşturduğumuz paneli
initPanel() metodundan alıp penceremize
ekliyoruz */
setTitle("Dev-C++");
/* Pencere başlık veriyoruz. */
setSize(1280, 700);
/* Pencere boyutlarını
belirliyoruz. */
setLocationRelativeTo(null);
/*Penceremiz açıldığında
nerde açılacağını belirleyen metottur. null olarak
kullandığımızda pencereyi
ortalı başlatır.*/
setDefaultCloseOperation(EXIT_ON_CLOSE);
/* Pencerenin
kapatıldığında ne yapılacağını yazıyoruz.Bizim uygulamamızda
uygulama tamamen
kapatılıyor.*/
setVisible(true);
/* Pencere görünmesini sağlayan metot */
}
private JPanel initPanel(){
JPanel panel = new JPanel(new
BorderLayout());
/* Göndereceğimiz paneli
oluşturup panel düzenini BorderLayout Ayarlıyoruz */
/*-----------------------
Panel North -------------------------------*/
/*---------------toolbarların oluşturulup eklenmesi--------------*/
/* Burda Yapmak istediğimiz JToolBarları oluşturmak. JToolBarları oluştururken
önce bir JToolBar oluşturup sonraki JToolBarları ilk oluşturduğumuz JToolBarın
üzerine ekleyeceğiz */
JToolBar toolBar = new JToolBar();
/*Yeni JToolBar nesnesinin
oluşturulması*/
toolBar.setFloatable(false);
/* Ana JToolBarın yerini
sabitlemek için kullandığımız JToolBara ait metot*/
JToolBar mainBar = new JToolBar();
/* Main butonlarını
ekleyebileceğimiz bir tool bar daha oluşturup
sabit toolbar a
ekliyoruz */
toolBar.add(mainBar);
/* mainBar toolBarına ekleyecek butonları oluşturuluyor */
JButton mainProjectButton = new JButton(new ImageIcon( // icon ekliyoruz
"C:/images/file/new_project.png")); // iconun yolunu gösteriyoruz
mainProjectButton.setToolTipText("New Project");
/* Buton üzerinde geldiğimizde açılacak bilgi baloncuğu */
mainBar.add(mainProjectButton);
/* Butonun mainBara
eklenmesi */
...
/*----------------------- Panel
Center -----------------------*/
/* Orta bölüme oluşturacağımız paneli 2 bölümden oluşacağı için
JSplitPane yapacağız.
JSplitPane 2 paneli birbirine bağlar. Bunun için öncelikle 2
panel oluşturacağız. Bu panellerden birincisi sol tarafta bulunan JTabbedPane
olarak ikincisini de JPanel olarak oluşturup daha sonra JSplitPane ekleyeceğiz. */
JTabbedPane projectTabPane = new JTabbedPane();
/* JTabbedPane
oluşturuyoruz */
projectTabPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
/* JSplitPane ile
JTabbedPane alanı küçültüldüğünde tablar alt alta gelmemesi,
bir ScrollBar oluşturmasını
sağlar.*/
JPanel fileTabPanel = new JPanel();
/* JSplitPanein sol tarafı için oluşturduğumuz panel */
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
projectTabPane, fileTabPanel);
/*new JSplitPane(x,y,z)
ayarlanabilir alanın dik
olması için x yerine "JSplitPane.HORIZONTAL_SPLIT",
yatay olması için
"JSplitPane.VERTICAL_SPLIT" kullanabiliriz.
oluşturmuş olduğumuz paneller
y ve z olarak gösterilen yerlere eklenir. */
JPanel projectPanel = new JPanel(new BorderLayout());
/* Tab Panele ekleyeceğimiz Paneli oluşturuyoruz */
JTree projectJTree = new JTree();
/*JTree bir tür liste
şeklidir. klasörleri ve dosyaları bir ağaç
yapısında gösterir.*/
projectPanel.add(projectJTree);
/*JTree'yi JTabbedPane'e
ekleyeceğimiz panele ekliyoruz*/
projectTabPane.addTab("Project", projectPanel);
/*JTabbedPane'e yeni bir
tab oluşturuyoruz. Tab eklerken addTab(x,y)
metodunu kullanıyoruz. x
yerine tabın adını, y yerine ekleyeceğimiz
paneli yazıyoruz. */
...
/*----------------------- Panel Sounth -----------------------*/
JTabbedPane optionsJTabbedPane = new JTabbedPane();
/* Yeni JTabbedPane nesnesi oluşturuyoruz */
JPanel
compilerPanel = new JPanel();
/* Ana JToolBarın Panelin
Üst kısmına eklenmesi */
optionsJTabbedPane.addTab("Compiler", compilerPanel);
/* Ana JToolBarın Panelin Üst kısmına eklenmesi */
/*----------------------- Panele eklenme -----------------------*/
panel.add(toolBar,
BorderLayout.NORTH);
/* Ana JToolBarın Panelin Üst kısmına eklenme */
panel.add(splitPane);
/* JSplitPane'in Panelin orta kısmına eklenme */
panel.add(optionsJTabbedPane, BorderLayout.SOUTH);
/* JTabbedPane'in Panelin
Alt kısmına eklenme */
return panel;
/* Paneli metodun
çalıştırıldığı yere gönderiyoruz. */
} /*
initPanel sonu*/
private JMenuBar initJMenuBar() {
JMenuBar bar = new JMenuBar();
/*JMenuBar oluşturuyoruz*/
/* Bu metotta öncelikle JMenüleri oluşturacağız. daha sonra
oluşturduğumuz JMenülerin
içlerini gerek JMenu, JMenuItem ile
gerekse JCheckBoxMenuItem ile oluşturup metodun çalıştırıldığı yere
göndereceğiz. */
String[] menuStrings = { "File", "Edit", "Search", "View", "Project",
"Execute", "Debug", "Tools", "CVS", "Window", "Help" };
/*burda
normal oluşumdan biraz daha farklı olarak döngüyle oluşturacağız
bunun için gerekli bir
String dizi oluşturup menü isimlerini bu dizi içerisine yazıyoruz.*/
JMenu[] menus = new JMenu[menuStrings.length];
/*bir önceki adımda String
dizisi oluşturmuştuk şimdi de bir JMenu dizisi
oluşturuyoruz. JMenu
dizisinin uzunluğunu ise menuStrings.length ile
String dizisinin içinden
alıyoruz. */
for (int i = 0; i < menus.length; i++) {
/*Döngüyü menus.length kadar yani JMenu dizisinin uzunluğu kadar tekrarlattırıyoruz*/
menus[i] = new JMenu(menuStrings[i]);
/*Her Tekrarda menus dizisinin
i. elemanına menuStrings dizisinin i.
elemanındaki Stringi atıyor.*/
bar.add(menus[i]);
/*
Oluşturulan i. menüyü JMenuBara ekliyor*/
}
...
/*---------------View menüsünün oluşturulup eklenmesi-----------------*/
JMenuItem
fileSourceFileItem = new JMenuItem("Source File",
new ImageIcon("C:/images/file/source_file.png"));
/*JMenuItem nesnesi oluşturuyoruz. JMenuItem(x,y) x yerine görünecek String yazılır. y yerine icon eklenir */
/*JMenuItem nesnesi oluşturuyoruz. JMenuItem(x,y) x yerine görünecek String yazılır. y yerine icon eklenir */
fileSourceFileItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
ActionEvent.CTRL_MASK));
/*Kısayol tuşu eklemek için setAccelerator(KeyStroke.getKeyStroke(x,y)); x yerine KeyEvent.VK_tusAdı yazılır. y yerine ActionEvent.CTRL_MASK, ActionEvent.ALT_MASK ,ActionEvent.SHIFT_MASK gibi farklı şekillerde kullanılabilir. fakat sadece harf ataması yapılacaksa y yerine 0 (sıfır) yazılır */
/*Kısayol tuşu eklemek için setAccelerator(KeyStroke.getKeyStroke(x,y)); x yerine KeyEvent.VK_tusAdı yazılır. y yerine ActionEvent.CTRL_MASK, ActionEvent.ALT_MASK ,ActionEvent.SHIFT_MASK gibi farklı şekillerde kullanılabilir. fakat sadece harf ataması yapılacaksa y yerine 0 (sıfır) yazılır */
fileNewJMenu.add(fileSourceFileItem); /*fileNewJMenuye eklenmesi*/
JMenu
fileReopenJMenu = new JMenu("Reopen"); /* yeni bir JMenu nesnesi oluşturuluyor*/
fileReopenJMenu.setIcon(new ImageIcon("C:/images/file/reopen.png")); /*fileReopenJMenu'süne icon ekliyoruz.*/
fileReopenJMenu.setEnabled(false); /* fileReopenJMenu varsayılan deaktif */
menus[0].add(fileReopenJMenu);
/*File menüsüne (menus[0]) eklenmesi*/
...
JMenu viewCompilerOutputMenu = new JMenu("Compiler Output"); /*JMenu içine eklemek için yeni bir JMenu oluşturuyoruz.*/
ButtonGroup viewCompilerOutputGroup = new ButtonGroup(); /*İki JCheckBoxMenuItemdan birinin seçili olması için ButtonGroup nesnesi oluşturuyoruz.
Bu nesne herhangi bir yere eklenmez bu nesneye JCheckBoxMenuItem ekleyeceğiz*/
menus[3].add(viewCompilerOutputMenu); /*View menüsüne (menus[3]) eklenmesi*/
JCheckBoxMenuItem viewAlwaysVisibleBoxMenuItem = new JCheckBoxMenuItem(
"Always Visible"); /*JCheckBoxMenuItem nesnesi oluşturuyoruz*/
viewCompilerOutputGroup.add(viewAlwaysVisibleBoxMenuItem); /*Oluşturduğumuz JCheckBoxMenuItem nesnesini ButtonGroup'a ekliyoruz*/
viewCompilerOutputMenu.add(viewAlwaysVisibleBoxMenuItem); /*Oluşturduğumuz JCheckBoxMenuItem nesnesini JMenuye ekliyoruz*/
viewCompilerOutputMenu.addSeparator(); /* addSeparator metodu, menüleri vs ayırt etmek için ayraç olarak kullanırız*/
JCheckBoxMenuItem viewOnlyWhenNeededBoxMenuItem = new JCheckBoxMenuItem(
"Only When Needed"); /*JCheckBoxMenuItem nesnesi oluşturuyoruz*/
viewOnlyWhenNeededBoxMenuItem.setSelected(true); /*viewOnlyWhenNeededBoxMenuItem'ın varsayılan seçili olarak belirtiyoruz.*/
viewCompilerOutputGroup.add(viewOnlyWhenNeededBoxMenuItem); /*Oluşturduğumuz JCheckBoxMenuItem nesnesini ButtonGroup'a ekliyoruz*/
viewCompilerOutputMenu.add(viewOnlyWhenNeededBoxMenuItem); /*Oluşturduğumuz JCheckBoxMenuItem nesnesini JMenuye ekliyoruz*/
...
return bar;
/* Paneli metodun çalıştırıldığı
yere gönderiyoruz. */
} /*initJMenuBar sonu*/
Ellerine sağlık çok güzel paylaşım
YanıtlaSilTeşekkür ederim hocam. Sizin sayenizde oldu :)
Sil