Oğlumun okulunun müfredatı hala Java AWT öğrenen öğrencileri içeriyor. Bunun en iyi yaklaşım olduğunu düşünmesem de, Milli Eğitim Bakanlığı tarafından belirlendiği için bunu değiştiremem. Her neyse, yıllar önce awt'yi kendim programladığım gibi oğluma egzersizleri konusunda yardım etmeye çalışıyorum. Ama etiket oluşturma ile ilgili bir sorunum var. Aslında peşinde olduğum şey, tablolar eksik olduğundan awt'de basit bir tablo oluşturmaktır. Yaklaşım, bir GridLayout almak ve ona Etiket eklemektir. Bu iyi çalışıyor ancak sütunlar ve satırlar arasındaki ayırma çizgilerine sahip olmak istedim. Bu yüzden Etiketi alt sınıfladım ve boyayı bu şekilde yeniden yazdım:
Tablo sınıfında yapıyorum
public class Table extends Container {
...
this.setLayout(new GridLayout(rows+1, cols));
for(int i=0; i<cols; i++) {
for(int y=0; y< rows; y++) {
TableLabel label = new TableLabel(rowData[i][y].toString());
add(label);
}
}
...
}
anlamına gelir
public class TableLabel extends Label {
public TableLabel(String labelText) {
super(labelText);
}
public void paint(Graphics g) {
super.paint(g);
System.out.println("paint");
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(Color.BLUE);
g2.drawRect(getX(), getY(), getWidth(), getHeight());
}
public void update(Graphics g) {
super.update(g);
System.out.println("update");
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(Color.BLUE);
g2.drawRect(getX(), getY(), getWidth(), getHeight());
}
}
Görüntü oluşturma değişmedi. Hata ayıklayıcıya göre ne paint ne de update çağrılmaz. Ayrıca println konsola yazmıyor. Neyi kaçırıyorum? Uygulama derlenmiş ve Java 11 altında çalışır. Biliyorum, AWT ve sürüm 11 biraz kablolu, ancak verilen kurulum bu. Şimdiden teşekkür ederim.
@Override
. Belki-Emin değilim -drawRect(0, 0, ...
. Seslenmeksuper.paint
gerekli değil.