Java Swing’le Alakalı 2 Önemli Nokta
Java 23 Ekim 2009, CumaÖzellikle JApplet veya JFrame ile çalışıyorsanız, grafiksel bir değişiklik ekrana yansımıyorsa
.validate()
fonksiyonunu çağırmak gerekiyor. Zira bazen değişikliği tetikleyen action’ı takip eden işlerde repaint() fonksiyonu gerekli güncellemeyi yapamıyor.
Benim kişisel görüşüm, çok bir yavaşlamaya yol açmadığı sürece
this.repaint();
this.validate();
şeklinde bu metodların beraber çağırılması gerektiği.
Diğer önemli nokta aslında grafiklerde benim önceden çok yaptığım bir hatayla alakalı. Örneğin bir JPanel’de hem “paint” metodu kullanıyor hem de üzerine JButton gibi nesneler eklemeye çalışıyorsak bu nesneler repaint() metodunu gördükleri zaman ekrandan kaybolmaya veya tutarsız değişiklikler yapmaya başlıyor. Uzun zaman neden olabileceğini ya da nasıl çözülebileceğini araştırdım. Tüm problem “public void paint(Graphics g)” metodunu override ederken “super.paint(g)” şeklinde çağırmayışımızla ilgili. Zira bunu çağırmak paint işlemleriyle alakalı varsayılan değerlerin işlenmesini sağlıyor. Bu satırı her paint metodunun en başına eklemekte fayda var.
Ayrıca Swing grubunda iş yapıyorsanız
public void paint(Graphics g)
yerine
public void paintComponent(Graphics g)
çağırmanız gerekiyormuş. Bunun nedenini henüz anlayamadım, ama bir yerde okudum. Evet, bu günlük bu kadar


Son Yorumlar