MegaCrafter
Obsidyen Madencisi
- Mesajlar
- 1,419
- En iyi cevaplar
- 0
- Beğeniler
- 1,542
- Puanları
- 3,070
İşte geri döndü! Aslında dönmedi. Aklıma geldikçe bildiğim bazı konuları anlatmaya çalışıyorum. Diğer bölümlere bakmak isterseniz "Java Bölümü"nden bulabilirsiniz. Bu bölümde penceremize klavye özellikleri eklemeyi öğreticem. Daha doğrusu ESC tuşuna bastığımızda programı kapatmak, A tuşuna bastığımızda ekranı büyütmek gibi şeyler. Bunu butonlar için yapmayın. Butonlara klavye tuşu eklemek için daha kolay bir yol var. Hatta ilk başta onu göstericem.
Önce kodumuza bakıyoruz. (8 bölümdür olduğu gibi...)
Burada yaptıklarımızı anlatayım. Öncelikle verilen butonun girdi haritasını alıyoruz. Ama bir şartımız var. WHEN_IN_FOCUSED_WINDOW. Yani pencereye odaklanıldığında. Sonra etkileşim haritasını alıyoruz. Sonra da girdi haritamıza bir girdi ekliyoruz. Bir KeyStroke ve verilecek ismi lazım. Oradaki 0'a takılmayın. Modifier o. Her neyse. Sonra bu girdi haritasında tuşumuza atadığımız isim ile etkileşim haritasına bir etkileşim ekliyoruz. Sonra da btn.doClick() yapıyoruz. Yani tuşa basılsın diyoruz. Sonra da modifiye ettiğimiz butonu geri döndürüyoruz.
Şimdi burada bir şeye takılmış olabilirsiniz. Neden "final JButton" diye. btn değişkenini bir Inner-Scope'ta tanımladığımız için değişkenin final olması gerekli. Yani methodun içinde bir class oluşturduğumuz için diyebiliriz. İşte bu kadar denebilir.
Asıl amacımıza gelelim. Klavye eklemek. Zor bir şey değil. Hatta fare özellikleri bile ekleyebilirsiniz. Şimdilik biz Klavye ile kalalım.
Kısaca "Eğer A tuşuna basılırsa pencerenin büyüklüğünü 500x500 yap. Eğer ESCAPE tuşuna basılırsa programdan çık." dedik. Sonra da penceremize etki edebilmesi için penceremize ekledik. İşte böyle yapabilirsiniz.
Eğer anlamadığınız bir yer varsa sorabilirsiniz. Eğer bir hatamı görürseniz de lütfen belirtin. İyi günler dilerim...
Önce kodumuza bakıyoruz. (8 bölümdür olduğu gibi...)
PHP:
public JButton butonYap(final JButton btn, int tuş) {
InputMap im = btn.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionm = btn.getActionMap();
im.put(KeyStroke.getKeyStroke(tuş, 0), "isim");
actionm.put("isim", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
btn.doClick();
}
});
return btn;
}
Şimdi burada bir şeye takılmış olabilirsiniz. Neden "final JButton" diye. btn değişkenini bir Inner-Scope'ta tanımladığımız için değişkenin final olması gerekli. Yani methodun içinde bir class oluşturduğumuz için diyebiliriz. İşte bu kadar denebilir.
Asıl amacımıza gelelim. Klavye eklemek. Zor bir şey değil. Hatta fare özellikleri bile ekleyebilirsiniz. Şimdilik biz Klavye ile kalalım.
PHP:
// Klavye Sınıfımız
public class Klavye implements KeyListener {
JFrame pencere;
public Klavye(JFrame pencere) {
this.pencere = pencere;
}
@Override
public void keyPressed(KeyEvent e) { // Tuşa basıldığında
int tuş_kodu = e.getKeyCode();
if (tuş_kodu == KeyEvent.VK_ESCAPE) {
System.exit(0);
}
if (tuş_kodu == KeyEvent.VK_A) {
pencere.setSize(500, 500);
}
}
@Override
public void keyReleased(KeyEvent e) { // Tuş çekildiğinde
}
@Override
public void keyTyped(KeyEvent e) { // Tuş yazıldığında (Kullanmayın)
}
}
PHP:
// main metodu
public static void main(String args[]) {
pencere.addKeyListener(new Klavye(pencere)); // Penceremize klavyemizi ekliyoruz
}
Eğer anlamadığınız bir yer varsa sorabilirsiniz. Eğer bir hatamı görürseniz de lütfen belirtin. İyi günler dilerim...