Java ile GUI Programlama #1

Ego1st

Uzman üye
15 Mar 2018
1,109
25
Java ile GUI Programlama

Merhaba THT Ailesi bu gün sizlerle beraber yeni bir seriye giriş yapıyoruz bu seride baştan sona Java ile GUI Programlama'yı öğreneceğiz. Şunu söylemeliyim bu seride size Java programlamayı ya da Java temellerini öğretmeyeceğim. Bunları forumumuzdaki Java bölümünden veya internette Java eğitimi yazarak bulabilirsiniz. Bu seride temel Java bilgisi olanlar için GUI kodlaması nasıl yapılır onu göstereceğim.

Öncelikle dil olarak Java'yı kullanacağımız için Java Development Kit yani JDK'yı indirmemiz gerekiyor, bu yazdığımız Java kodlarının derlenmesi için gerekli olan bir kittir.

1- JDK İndirmek

Şimdi arama çubuğuna "jdk download" yazalım.



Gelen sayfadan sistemimize uygun olan sürümü seçiyoruz. Eğer sistemimiz 32 bit ise Java SE 8'i, 64 bit ise en son sürümü indirebiliriz, bende şu an Java SE 15 gözüküyor siz de en son sürüm neyse onu indirebilirsiniz, zaten ben çok büyük değişim olursa konuyu güncellerim. Neyse şimdi buradan Oracle JDK kısmından JDK Download seçeneğine tıklıyoruz



Tıkladıktan sonra gelen sayfadan sisteminize uygun olan indirme seçeneğini seçiyorsunuz.



Dosyamızı indirdikten sonra next -> next şeklinde kurabilirsiniz lakin burada dikkat etmeniz gereken bir husus var. İndirme dizinin C:\Program Files\Java\jdk-15 şeklinde olması lazım, bu standart olandır. Değilse de bu duruma getirebilirsiniz.

Kurulum işlemleri bittikten sonra java'yı sistemimize tanıtmamız lazım bunun için; Bu Bilgisayar -> Özellikler -> Gelişmiş Sistem Ayarları -> Ortam Değişkenleri. Daha sonra buradan Sistem Değişkenleri altından Path'e çift tıklıyoruz ve C:\Program Files\Java\jdk-15\bin yazıyoruz.



Bunu yaptıktan sonra tamam, tamam diyip çıkıyoruz. Şimdi kodlarımızı yazacağımız IDE olan IntelliJ IDEA'nın kurulumuna geçelim.

2- IntelliJ IDEA

Öncelikle arama motorumuzu intellij yazalım ve çıkan ilk sonuca (jetbrains.com)'a girelim.



Siteye girince direk karşımıza çıkan Download butonuna basalım.



Karşımıza çıkan yerde sistemimize uygun olan (Mac, Windows, Linux) seçtikten sonra Community yazan yerin altındaki Download butonundan indirmeye başlayabiliriz.



İsteğinize göre daha gelişmiş bir versiyon olan Ultimate seçeneğini de seçebilirsiniz fakat ilk 30 günlük deneme sürümünden sonra ücret isteyecektir.

Şimdi 574 Mb'lık setup dosyamız indikten sonra çift tıklayalım ve açalım, kurulum ekranımız gelsin.



Next diyoruz



Burada yükleme konumu büyük bir sorun teşkil etmiyorsa değiştirmeden Next diyelim



Create Desktop Shortcut kısmında sisteminizin özelliğine göre 32-bit veya 64-bit seçebilirsiniz.

Update PATH variable'ı her şeyin düzgün çalışması için işaretlemeniz gerekiyor.

Open Folder as Project ise normal klasörleri proje dosyası olarak açmak için gerekli, tercihen işaretlenebilir. Ben kullanıyorum.

Create Associations kısmı yine tercihen ben Java ve Kotlin dosyaları için ekliyorum bu özelliği.

Ve eğer sisteminiz 32-bit ise bu özelliği seçmeniz gerekiyor.

Bütün ayarları yaptıysak Next diyelim.

Diğer kısımda yine Next diyerek geçelim ve yükleme başlasın.



Burada ise yapılan değişiklik ve eklenen PATH'lerin geçerli olabilmesi için bilgisayarınızı yeniden başlatmanız gerekiyor.

Evet, eğer yeniden başlattıysak masaüstümüzdeki IntelliJ IDEA'ya çift tıklayıp açalım.



Do not import setting'i işaretleyip OK'a basalım



Burada temayı seçeceğimiz yer geliyor ben Darcula'yı sevdiğim için onu işaretleyip Next diyorum.



Buradaki ayarları daha sonra da değiştirebiliyoruz o yüzden pek önemli değil Swing : UI Designer'da Enable yazıyorsa bir kere tıklayıp aktif edin eğer Disable yazıyorsa dokunmadan Next'e basın.



Burada keza yine önemli bir şey yok.

Artık "Start using IntelliJ IDEA" butonuna basıp kullanmaya başlayabiliriz.

Buraya kadar bir sıkıntı veya bir hata ile karşılaştıysanız mutlaka yazın.



IntelliJ ilk açıldığında karşımıza 3 tane seçenek geliyor

>> New Project
>> Open or Import
>> Get from Version Control


Bizim daha önceden bir projemiz olmadığından veya Git gibi bir versiyon kontrol sistemi kullanmadığımızdan New Project'i seçip devam edelim.



Sol taraftaki menüden Maven, Gradle ve FX gibi seçenekleri seçebilirsiniz fakat biz şu an dümdüz Java projesinde GUI yapmaya çalıştığımız için Java seçeneğinden hiçbir şey yapmadan Next diyeceğiz.

Diğer gelen ekranda yine Next diyoruz.



Burada projemizin adı ve kaydedileceği konumu belirliyoruz. Benim zaten bir proje klasörüm olduğundan ben orayı seçtim sizde büyük ihtimal default olarak C:\Users\kullanıcı_adı\IntelliJProjects\YeniProje şeklinde çıkmıştır.

Adı ve konumu ayarladıysak Finish diyip projeyi oluşturalım.



Gördüğünüz gibi IntelliJ bize bomboş bir proje verdi. GUI ve diğer IDE detaylarına geçmeden önce hemen bir Hello World örneği yapalım :)

src altına yeni bir Java sınıfı oluşturuyoruz.





Buradan sınıf adını girelim ve enter tuşuna bastıktan sonra sınıfımız gelecektir.

Şimdi YeniProje sınıfımızın içine psvm yazalım ve taba basalım. psvm'nin açılımı: public static **** main()'dir yani Java'daki main yani ana fonksiyonun tanımlanmasıdır.



Kod:
public class YeniProje {
    public static **** main(String[] args) {
        System.out.println("Hello World");
    }
}

Açılan psvm'nin içine sout yazdım ve taba bastım ardından System.out.println(""); şeklinde benim için tamamladı. Bu kod Java'da konsola bir şeyler yazdırmak içindir.

Şimdi Yeni Projenin olduğu satırda sol taraftaki küçük yeşil çalıştır butonuna basalım.



Çıktısı aşağıdaki açılan pencerede bu şekilde olacaktır.

Hello World

Process finished with exit code 0


Evet Hello World yazdırdık hadi şimdi GUI programlamaya giriş yapalım.

GUI Nedir?

GUI (Graphical User Interface) yani Grafiksel Kullanıcı Arayüzü, son kullanıcının uygulamada grafiksel olarak bir arayüzle karşılaşmasını sağlar. Her dilin kendi GUI Framework'leri vardır. Günümüzde en çok kullanılan uygulamaların çoğu Grafiksel bir arayüze sahiptir.

Şimdi ise Java ve Swing UI Designer ile bir GUI Application yapacağız. Şimdi src'ye sağ tıklayıp yeni bir Swing UI Designer'ın altından GUI Form'a tıklayalım.





Gelen kısımda Form name'e form1 yazdım siz istediğinizi diyebilirsiniz. Daha sonrasında hiçbir şeyi değiştirmeden OK'a basalım.



Resimde de gördüğünüz gibi form1.java ve form1.form isimli 2 adet dosya oluştu.

form1.java : Genel olarak form'daki kodları yazmak için kullanacağımız kısım
form1.form : Uygulamanın tasarımını yapacağımız kısım

Şu an Form dosyamızı oluşturmuş olmamıza rağmen YeniProje'de çalıştırdığımızda hiçbir şey olmayacaktır. Çünkü form1'i çağırmadık.

Şimdi form1.form adlı dosyamıza gelip JPanel'in özelliklerinden field kısmına "panel1" yazalım. Bu panele verdiğimiz isim otomatik olarak form1.java altında tanımlanır.



Yazdıktan sonra form1.java'ya gelip public class form1'in yanına extends JFrame yazalım. Bu işlem, form1'in bir Java penceresi olduğunu belirtir.

Daha sonra form1'in içine form1'in primary constructor'unu oluşturuyoruz ve içinde form'umuzun özelliklerini belirtiyoruz / belirliyoruz.

Bütün bu işlemler bittikten sonra form1.java şu şekilde olmalıdır.

Kod:
import javax.swing.*;

public class form1 extends JFrame {
    private JPanel panel1;

    public form1(){
        add(panel1);
        setSize(400,200);
        setTitle("Merhaba Dünya!");
    }
}

Bu kısım bu kadar. Sıra YeniProjedeki sınıfımızdaki main fonksiyonumuz içinde bu form'u başlatmaya geldi.

Kod:
form1 form1 = new form1();
form1.setVisible(true);

Evet her şeyi ayarladık, şimdi sağ üst kısımdaki yeşil başlat butonuna basalım ve bakalım gelecek mi?





Evet gördüğünüz gibi form'umuz geldi.

Şimdi şöyle bir uygulama yapalım; kullanıcıdan ad ve soyad bilgilerini ayrı ayrı alsın ve kullanıcı bir butona basınca bir textte versin.

Öncelikle Form'umuza 2 tane TextField, 1 tane Label ve 1 tane de Buton koyacağız.

Bunları şu şekilde formumuza sürükleyelim.



Şu an oldukça dağınık ve kötü gözüküyor, şimdi ise sol taraftaki HSpacer ve VSpacer'ları kullanacağız. Bunlar isminden de anlaşılacağı gibi boşluk veriyorlar.



HSpacer'ı yan boşluk ve VSpacer'ı dikey boşluk olarak kullandık, bu şekilde çok daha iyi gözüküyor.

Şimdi yapacağımız şey butona basınca gerçekleşeceği için butona "event" atamamız lazım. Bu eventin içine ise butona tıklanınca ne olacağını yazacağız.

Event'i butona sağ tıklayarak verebiliriz.







Bu şekilde bir Action Listener oluşturduktan sonra form1 içinde şöyle bir kod bloğu gelmesi lazım.

Kod:
	button1.addActionListener(new ActionListener() {
            [USER=277185]over[/USER]ride
            public **** actionPerformed(ActionEvent e) {
                
            }
        });

Bundan sonra yazacağımız kodları, actionPerformed metodunun içinde yazacağız.

Öncelikle Text Field'larımızdaki String'leri alacağız.

Kod:
String ad = textField1.getText();
String soyad = textField2.getText();

Gördüğünüz gibi textField1.getText gibi basit bir kodla içindeki girilen stringi aldık.

Şimdi label'ımızda ikisini birbirine ekleyip göstereceğiz

Kod:
label1.setText(ad + " " + soyad);

Kodumuz bu kadardı, şimdi çalıştıralım.



Ve gördüğünüz gibi başarılı bir şekilde çalıştı. Ancak şu ana kadar yazdığımız kod normal standartlara pek uygun değil. Örneğin YeniProje sınıfındaki form1'i çağırma metodunu main thread'de yapmamamız gerekirdi. Şu şekilde düzenleyebiliriz.

Kod:
	SwingUtilities.invokeLater(() -> {
            form1 form1 = new form1();
            form1.setVisible(true);
        });

Gördüğünüz gibi SwingUtilities kullanarak standartlara uygun bir kod haline getirdik.

Fark etmiş olabileceğini üzere tasarımdaki textfieldlar, buton vs. Java'nın kendi stok tasarımlarıyla geliyor, bunu her sistemin kendi tasarımıyla değiştirmek için YeniProje.java'da main fonksiyonu içine şu kodu yerleştirelim.

Kod:
	try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e){
            e.printStackTrace();
        }

Gördüğünüz gibi UIManager kullanarak sistemin kendi sınıfını bulmaya ve uygulamaya çalışıyor eğer bulamazsa da hatayı veriyor. Bu kodu yazdıktan sonra tekrar çalıştıralım.



Çok daha güzel :))

Diğer bir husus ise belki denerken de farketmiş olabileceğiniz üzere programda kapatma (X) butonuna basınca kapatmaması, bunu da kendimiz ayarlamamız gerekiyor.

form1.java içine primary constructorun altına

Kod:
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

yazalım ve deneyelim, artık çarpıya basınca kapanıyor.

Her ne kadar basit de olsa çok şey öğrendiğimiz bir uygulama yaptık. Bu günlük çok basit ve temel bir giriş yapmış olsak ta bu seriyi devam ettireceğim ve en sonunda baştan sona bir projeyi Swing kullanarak GUI ile tasarlayabileceğiz.

Umarım bu içerik yararlı olmuştur, işinize yaradıysa, okumaktan keyif aldıysanız veya hoşunuza gittiyse teşekkür etmeyi unutmayın. Sağlıcakla kalın :))
 

x4807

Katılımcı Üye
10 Ağu 2019
985
16
Eline sağlık, yazılan kodların da görüntüleri olsaydı daha da güzel görünürdü. :))
 

Ego1st

Uzman üye
15 Mar 2018
1,109
25
Ellerin dert görmesin

Ⱨ₳₵₭ĐɆⱤ₮;9231392' Alıntı:
Eline sağlık dostum. :))


Ellerine sağlık ,


Eline emeğine sağlık

Eline sağlık, yazılan kodların da görüntüleri olsaydı daha da güzel görünürdü. :))

Teşekkürler :))
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.