Ö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 :)

Bu yazıyı paylaşın