Java’da Nested Class (iç içe class tanımı)

// Nested class Bir class içerisinde başka class tanımlama demektir.
// Eski java versiyonlarında olmayan bir özelliktir.
// statik tanımlamalar sürekli olarak bellekte yer işgal ederler.
// Örnek bir bina ana class o binanın katları iç class gibi tanımlanabilir.
// kalıtım konusu ile karıştırmamak gerekmektedir.
// local classlar içe method içerisine yazılan ve method çalıştığı zaman çalışan ve oluşan classlardır. Method çalışması bittiğinde varlıklarıda sona erer.

public class Main {

    public int x = 0;

    class FirstLevel {

        public int x = 1;
        // Bu örnek shadowing denilen bir yapıdır javada (gölgelendirme diye anlatılmaktadır).
        void methodInFirstLevel(int x) {
            System.out.println("x = " + x);
            System.out.println("this.x = " + this.x);  // iç classın x değerine erişmek için. this dendiğinde o statementın bulundupu class demektir.
            System.out.println("ShadowTest.this.x = " + Main.this.x); // dış classın x değerine erişmek için. 
        }
    }
    public static void main(String... args) {
        Main st = new Main();
       Main.FirstLevel fl = st.new FirstLevel();
        fl.methodInFirstLevel(23);
    }
}

 

Java’da Event (Olay) Yakalama

import javax.swing.JFrame;

public class ana_class {
public static void main(String[] args) {

diger digerObject = new diger();
digerObject.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Program kapatmaya izin verilmesi.
digerObject.setSize(275,180);
digerObject.setVisible(true);

}
}

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
//Temel Windows Bileseni olusturur.
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JOptionPane;

public class diger extends JFrame{  //Extends JFrame yaparak windows olusturulması sağlandır.

private JTextField item1;
private JTextField item2;
private JTextField item3;
private JPasswordField passwordField;

public diger(){
super("Başlık");
setLayout(new FlowLayout());

item1 = new JTextField(10);
add(item1); //otomatik ekleme yapacak.

item2 = new JTextField("Yazı Gir");
add(item2);  //baş ekrana item2 yi ekle

item3 = new JTextField("yazı değiştirilemez",25);
item3.setEditable(false);
add(item3);

passwordField = new JPasswordField("şifre");
add(passwordField);

thehandler handler = new thehandler();

item1.addActionListener(handler);
item2.addActionListener(handler);
item3.addActionListener(handler);
passwordField.addActionListener(handler);

}

// olay yakalama.
private class thehandler implements ActionListener {

public void actionPerformed(ActionEvent event){

String string = "";

if(event.getSource()== item1)
string = String.format("field 1: %s",event.getActionCommand());
else if (event.getSource()== item2)
string = String.format("field 2: %s",event.getActionCommand());
else if (event.getSource()== item3)
string = String.format("field 3: %s",event.getActionCommand());
else if(event.getSource()== passwordField)
string=String.format("password field is: %s", event.getActionCommand());

JOptionPane.showMessageDialog(null,string); //pozisyon ve bilgi
// mouse ile textboxların üzerine gelip enter dediğimizde mesaj ekranı açılacak.

}

}

;
}

 

JTextField ve JPasswordField kullanımı

import javax.swing.JFrame;

public class ana_class {
public static void main(String[] args) {

diger digerObject = new diger();
digerObject.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Program kapatmaya izin verilmesi.
digerObject.setSize(275,180);
digerObject.setVisible(true);

}
}

import java.awt.FlowLayout;
//Temel Windows Bileseni olusturur.
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JOptionPane;

public class diger extends JFrame{
//Extends JFrame yaparak windows olusturulması sağlandır.

private JTextField item1;
private JTextField item2;
private JTextField item3;
private JPasswordField passwordField;

public diger(){
super("Başlık");
setLayout(new FlowLayout());

item1 = new JTextField(10);
add(item1); //otomatik ekleme yapacak.

item2 = new JTextField("Yazı Ekleyin");
add(item2);  //baş ekrana item2 yi ekle

item3 = new JTextField("değiştirilemez",20);
item3.setEditable(false);
add(item3);

passwordField = new JPasswordField("şifre");
add(passwordField);
}

}

 

JFrame ve JLabel Uygulaması

import javax.swing.JFrame;

public class ana_class {
public static void main(String[] args) {

diger digerObject = new diger();
digerObject.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Program kapatmaya izin verilmesi.
digerObject.setSize(275,180);
digerObject.setVisible(true);
}
}

—-

import java.awt.FlowLayout;
//Temel Wiondows Bileseni olusturur.
import javax.swing.JFrame;
// Simple image ve text için
import javax.swing.JLabel;

public class diger extends JFrame{

private JLabel item1;
public diger(){
super("The title bar");
setLayout(new FlowLayout());

item1 = new JLabel("Labelin iç yazısı");
item1.setToolTipText("Mouse labelın üzerine geldiğinde çıkan yazı");
add(item1); //otomatik ekleme yapacak.
}

}