31 Ocak 2012 Salı

İLERİ JAVA SWİNG BİLEŞENLERİ

Merhabalar arkadaşlar. Java da kullandığımız temel GUI(Grafical User Interface) bileşenleri ; JButton,JLabel,JTextField,JTextArea (ve olmazsa olmazı JScrollPane) ,JCheckBox,JRadioButton  ve en önemlilerinden menü sınıflarıydı. Bu bileşenler kısmen işimizi gören bileşenler olmak üzere bazen yetersiz kalabiliyorlar. Java her konuda olduğu gibi bu konuda da bizi yalnız bırakmadı ve daha fonksiyonel bileşenlerle karşımıza çıktı. Misal; JTable, JColorChooser , JTree ilh.
Ben de 3 yazı dizimi bu ileri swing bileşenlerine ayırmak istedim ve ilk olarak JTable  class ı ile başlamayı uygun gördüm.

JTable
JTable verileri satır ve sütun şeklinde gösteren , gösterirken  de iki boyutlu dizi kullanan bir swing bileşenidir. JTable bileşeni JDBC (Java Data Base Connection) kullananlar için pek kullanışlı bir bileşendir. Nihayetinde  veritabanında da satır ve sütunlarlar vardır. JTable bileşenini JScrollPane bileşeni ile beraber kullanmamız gerekir. Yoksa pek bir anlamı olmaz. JScrollPane şu bizim penceremizi aşağı yukarı sürüklemek için kullandığımız araçtır. Bu bileşene  JTable eklenir.
JTable bileşeni 3 model destekler.Bunlar;
            -Tablo modeli:Veri işlemek ve tutmak için
            -Kolon modeli:Tabloda ki tüm kolonları gösterir.
            -Liste-seçim modeli:JList classına benzer. Aynı özellikleri gösterir.

JTable classı içerisinde bir çok metodu barındırır. Bunlardan bazılarını ve işlevlerini yazalım.
            setAutoResizeMode : tablo boyutunu ayarlamamıza yardımcı olur.
            setGridColor:Çizgilerin renklerini ayarlar
            setSelectionMode:Listeden yapacağımız seçimin tipini belirlememizi sağlar.
            setSelectionBackground:Listeden yapacağımız seçimde  seçtiğimiz  kolonun arka plan rengini belirler.
            rowSelectionAllowed:Tablodan seçim yapıp yapamayacağımızı belirler. Default değeri  true’dur.

JTable classı tabloyu düzenlemek için bir çok özellik içerir. Bunlar;
-JTable.AUTO_RESIZE_OFF
-JTable.AUTO_RESIZE_LAST_COLUMN
- JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS
- JTable.AUTO_RESIZE_NEXT_COLUMN
- JTable.AUTO_RESIZE_ALL_COLUMNS
                                                           
Bize default olarak gelen   JTable.AUTO_RESIZE_SUNSEQUENT_COLUMNS dur.
Aşağıda ki kod basit bir JTable classınınn kullanıldığı bir örnektir.
package jtableclassforblog;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class olay extends JFrame {
   
    String [] kolonlar={"Üniversite","Şehir"};
    Object [][] sutunlar={{"Yıldız Teknik Üniversitesi","İstanbul"},{"Karadeniz Teknik Üniversitesi","Trabzon"},
        {"İstanbul Teknik Üniversitesi","İstanbul"}
    ,{"Bilecik Üniversitesi","Bilecik"},{"Gazi Üniversitesi","Ankara"},{"Anadolu Üniversitesi","Eskişehir"},
    {"İzzet Baysal Üniversitesi","Manisa"}};
   
    JTable table=new JTable(sutunlar,kolonlar);
    JScrollPane pane=new JScrollPane(table);
   
    public olay()
    {
        table.setSelectionBackground(Color.ORANGE);
        table.setGridColor(Color.BLUE);
        add(pane);
    }
}


Bu kodların derlenip çalıştırılması halinde çıktı şu şekilde olur;






Kaynak kodları ve çalıştırılabilir jar dosyasını buradan indirebilirsiniz. İyi çalışmalar...

15 Ocak 2012 Pazar

JAVA DA MENÜ KAVRAMI-2

Bir önceki yazımda menülere bir giriş yaparak ne olduğundan bahsettim ve bir misal ile olayı daha anlaşılabilir kıldım. Şimdi sık olarak kullandığımız başka bir menü çeşidinden bahsedeceğim. Popupmenü. Namı diğer sağ tık menüsü. Bir component'e veya pencereye sağ tıkladığımızda önümüze gelecek seçenekleri düzenlememize ve bu seçeneklere istediğimiz şekilde event yazabilme olanağı verir bizlere popup menüsü. 


Popup menünün önemli bir özelliği ise mouselistener ile çalışmasıdır. Zaten adı üzerinde sağ tık menüsü. lafı fazla uzatmadan uygulamamızın olduğu class'ın kodlarını hemen yazalım. Ha unutmadan bir önceki yazımla alakalı bir örnek daha yaptım. Menülere ikonun nasıl ekleneceği hususunda bir uygulama oldu. O uygulamayı da bu örneğin içine atarım. Oradan incelersiniz. Sorularınız için mcelenk@yuvamgroup.com adresine mail atabilirsiniz. 


package popupmenu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;

public class popup extends  JFrame {
   
    ImageIcon im=new ImageIcon(getClass().getResource("/resim/ytu.gif"));
    JLabel l=new JLabel(im);
    JPopupMenu pop=new JPopupMenu();
    JMenuItem item1=new JMenuItem("Notepad");
    JMenuItem item2=new JMenuItem("Paint");
    JMenuItem item3=new JMenuItem("Çıkış");

    public olay() {
        super("Popupmenü uygulaması");
        add(l);
        l.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseReleased(MouseEvent e) {
                super.mouseReleased(e);
                if(e.isPopupTrigger())
                {
                    pop.show(e.getComponent(), e.getX(), e.getY());
                }
                }
           
        });
                pop.add(item1);
                item1.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        Runtime r=Runtime.getRuntime();
                        Process p=null;
                        try {
                            p=r.exec("C:\\Windows\\notepad.exe");
                        } catch (Exception ex) {
                            JOptionPane.showMessageDialog(null, "Bir hata oluştu","HATA",JOptionPane.ERROR_MESSAGE);
                        }
                       
                    }
                });
                pop.add(item2);
                item2.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Runtime r=Runtime.getRuntime();
                Process p=null;
                try {
                    p=r.exec("C:\\Windows\\system32\\mspaint.exe");
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, "Bir hata oluştu","HATA",JOptionPane.ERROR_MESSAGE);
                }
            }
        });
                pop.add(item3);
                item3.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.exit(0);
                    }
                });
    }
}

Uygulamanın kaynak kodlarını, jar dosyasını ve yukarıda bahsettiğim bir önceki ders ile alakalı misali buradan indirebilirsiniz. İyi çalışmalar.

10 Ocak 2012 Salı

JAVA DA MENÜ KAVRAMI-1

Menüler görsel programlama da önemli bir yer tutarlar. Günlük hayatta bilgisayar da kullandığımız programların çoğunda görebilirsiniz. En basit misal windows daki notepad uygulaması. Lafı fazla uzatmadan menü oluştururken izlememiz gereken yolu algoritmayı vereyim.

Menübar oluşturulur---->Bu menübar'a menüler yerleştirilir.---->Menülerin altına menücükler (meni item) yerleştirilebilir. Aşağıdaki koda dikkatlice bir göz atın. Ha unutmadan bu menücükler Jmenu de olabilir. JRadioButtonMenuItem da olabilir. Ayrıntıları aşağıda ki kodda görebilirsiniz.



package menuuygulamasi.pkg1;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;

public class MenuUygulamasi1 {
    public static void main(String[] args) {
        final JFrame x=new JFrame("Menu Uygulaması");
        x.setSize(350, 250);
        x.setLocationRelativeTo(null);
        x.setVisible(true);
        JMenuBar menubar=new JMenuBar();
        x.setJMenuBar(menubar);
       
        JMenu dosya=new JMenu("Dosya");
        JMenu yardım=new JMenu("Yardım");
        menubar.add(dosya);
        menubar.add(yardım);
       
        JMenuItem item1=new JMenuItem("Yeni");
        JMenuItem item2=new JMenuItem("");
        JMenuItem item3=new JMenuItem("Yazdır");
        JMenuItem item4=new JMenuItem("Çık");
       
        dosya.add(item1);
        dosya.add(item2);
        dosya.addSeparator();
        dosya.add(item3);
        dosya.addSeparator();
        dosya.add(item4);
        item4.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
       
       
        JMenu yazilim=new JMenu("Yazılım");
        JMenu donanim=new JMenu("Donanım");
        JMenu renk=new JMenu("Ara yüz");
       
        yardım.add(yazilim);
        yardım.add(donanim);
        yardım.add(renk);
       
        yazilim.add(new JMenuItem("Linux"));
        yazilim.add(new JMenuItem("Windows"));
        yazilim.add(new JMenuItem("MacOS"));
       
        donanim.add(new JMenuItem("Mouse"));
        donanim.add(new JMenuItem("Touchpad"));
       
        JRadioButtonMenuItem radioblue,radiosari,radioyesil;
        renk.add(radioblue=new JRadioButtonMenuItem("Mavi"));
       
        final Container y=x.getContentPane();
        radioblue.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                y.setBackground(Color.BLUE);
            }
        });
        renk.add(radiosari=new JRadioButtonMenuItem("Sarı"));
        radiosari.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                y.setBackground(Color.YELLOW);
            }
        });
        renk.add(radioyesil=new JRadioButtonMenuItem("Beyaz"));
        radioyesil.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                y.setBackground(Color.WHITE);
                
            }
        });
        ButtonGroup gr=new ButtonGroup();
        gr.add(radioblue);
        gr.add(radiosari);
        gr.add(radioyesil);
       
        x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Buradan kodların kaynak dosyasını ve çalıştırılabilir jar dosyasını indirebilirsiniz. İyi çalışmalar...