NOT: makale içeriğinde geçen sözcükler ve karşılıkları:
-Listener = "dinleyici"
-Kontoller = "JButton,JTextField,JFrame vb."
-Component = "genel-özel amaçlı kontroller"
Bazı durumlarda mevcut kontroller tam olarak ihtiyacımıza cevap vermeyebilir.
Bu gibi durumlarda kendimize ait kontroller-componentler geliştirmemiz gerekebilir.
İhtiyacımıza yönelik bir kontrol geliştirmek için farklı yol ve yönteme başvurulabilir.
Bazı durumlarda mevcut kontrolleri revize ederek,ihtiyacımıza yönelik özellikler ekleyerek çözüm getirilir.
Bu yazı,kendimize ait Listener oluşturma hakkında olacaktır.
Java'da kullanılan herhangi bir kontrolü revize ederek,veya kendimiz geliştirdiğimiz componente Listener oluşturabiliriz.
Bu durumda revize edilmiş ilgili kontroller bizim Listener ile çalışacaktır.
Aşağıda verilen örnek uygulamada "JTextField" kontrolü için özel bir Listener geliştirilmiştir.
Geliştirdiğimiz Listener "keyPress,keyReleased ve mouseListener" işlevlerine sahiptir.
Daha fazla özellik eklemek için "JComponent" sınıfı dökümantasyonundan yararlanabilirsiniz.
Uygulamamız Main.java ve TextFieldComponent.java class'lara sahiptir.
TextFieldComponent.java içeriği:
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
public class TextFieldComponent extends JComponent {
public TextFieldComponent(){
//constructor
}
KeyListener keyPressListener = new KeyAdapter() {
public void keyPressed(KeyEvent keyEvent) {
int key_code = keyEvent.getKeyCode();
String which_key = KeyEvent.getKeyText(key_code);
System.out.println("KeyPress-Key:" + which_key);
}
};//keyPressListener
KeyListener keyReleasedListener = new KeyAdapter() {
@Override
public void keyReleased(KeyEvent keyEvent) {
int key_code = keyEvent.getKeyCode();
String which_key = keyEvent.getKeyText(key_code);
System.out.println("KeyReleased-Key:" + which_key);
}
};//keyReleasedListener
MouseListener mouseListener = new MouseAdapter() {
public void mousePressed(MouseEvent mouseEvent) {
int x = mouseEvent.getX();
int y = mouseEvent.getY();
int xx = mouseEvent.getXOnScreen();
int yy = mouseEvent.getYOnScreen();
int cc = mouseEvent.getClickCount();
System.out.println("x:" + x);
System.out.println("y:" + y);
System.out.println("xx:" + xx);
System.out.println("yy:" + yy);
System.out.println("cc:" + cc);
int mgetButton = mouseEvent.getButton();
switch(mgetButton){
case 0x1:
System.out.println("BUTTON LEFT");
break;
case 0x2:
System.out.println("BUTTON CENTER(wheel)");
break;
default:
System.out.println("BUTTON RIGHT");
break;
}//switch
}
};//mouseListener
}
Main.java içeriği:
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Main {
public static void main(String[] args) {
TextFieldComponent myTextFieldComponent = new TextFieldComponent();
JFrame jFrame = new JFrame();
jFrame.setBounds(550, 250, 300, 300); //pencere ölçüleri ve ekrandaki yerleşme planı.
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField();
textField.addKeyListener(myTextFieldComponent.keyPressListener);
textField.addKeyListener(myTextFieldComponent.keyReleasedListener);
textField.addMouseListener(myTextFieldComponent.mouseListener);
textField.requestFocus();
jFrame.add(textField, "North");
jFrame.setVisible(true);//pencereyi görünür yap.
}
}
Hiç yorum yok:
Yorum Gönder