Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

paintcomponent - override -JComponent - Java


Suark

Öne çıkan mesajlar

evet sonunda uğraştığım program için çözümümü buldum.

daha öncede bahsedilmişti burada, becerememiştim; bazı konseptleri tam anlamamıştım.

Şimdi ben JLabel'ımın paint component methodunu override ediyorum.
Kendimce bi class yazdım


class MyLabel extends JLabel{

static int arcsizeW;
static int arcsizeH;
static int arcstart;
static int arcend;

public MyLabel(int W, int H, int start, int end) {
arcsizeW = W;
arcsizeH = H;
arcstart = start;
arcend = end;
}
@Override
public void paintComponent(Graphics g){

Graphics gg = g;
gg.fillArc(0, 0,arcsizeW , arcsizeH, arcstart, 60);
}

}


şimdi bu süper çalışıyor tam istediğim gibi oldu herşey, yalnız sıkıntı şu. Bu JLabellardan birden fazla var ve ben her çağırışımda buradan çekmesini istiyorum.
Çekiyorda, yapıyor ama 100 tane JLabel varsa ( hepsi için ayrı bir arc çiziyor ) 100. nin paintcomponentini hepsine uyguluyor.

Şimdi javadocta zaten uyarmış sanırım. Ama çıkamadım işin içinden.
Bir yerde yeniden paint etmesini engellemem lazım.

Nasıl yaparım?

edit : başlık ve code tagi saçmalaması
Link to comment
Sosyal ağlarda paylaş

ayaküstü deneme amaçlı yaptım abi onu,

aslında ona da gerek yok orda ama, javadocta direk kullanmayın falan diyodu ondan koydum, yoksa direk g üzerinden çağırabiliyorum.

static olan da şeyden,
paincomponent methodunun içine değişken sokmak istedim ama korktum, çalışmaz falan diye. o yüzden direk construct edince o variable ları ona atıyor, static olduğu için zırt diye alıyor :p.

başka türlü de olur mu ki, o paintcomponente variable tanımlasam bozulmaz dimi

bu arada çağırdığım yer de şu


for(int i=0;i<rowcount;i++){

arcazimuth = Rawazimuth(azimuth[i]);
MyLabel FLabel = new MyLabel(400, 200, (int)arcazimuth[0],(int) (arcazimuth[1]-arcazimuth[0]));

FLabel.setOpaque(true);

Dimension LabelSize = new Dimension( 400,300);
FLabel.setSize(LabelSize);
FLabel.setLocation(lon[i], lat[i]);
MyPanel.add(FLabel);
}
Link to comment
Sosyal ağlarda paylaş

ben private derdim static yerine. static adi üstünde degismeyen deger yada degistirilmesi istenmeyen deger. static fonsiyonlar biraz farkli o ayri. parameter olan variable direkt kullanmamak iyi olabilir. demek istedigim isim secerken. daha secici olmak. birde sorunu biraz daha acsan örnekle felan.
Link to comment
Sosyal ağlarda paylaş

hmm hemen örnekleyeyim,

şimdi JLabel yerine arc çizdiriyorum.

arcın özellikleri dinamik, başlangıç ve bitiş açı aralıkları her JLabel için unique olarak hesaplanıyor.

5 tane JLabel koyucam diyelim,
Başlangıç açıları sırayla

50
150
200
15
45

olsun.
tek tek onları arc olarak paint ediyorum, hepsini de yapıyor aslında ama en son gelen hangisi ise, bu örnekte "45" geri kalan bütün hepsini 45 e göre paint ediyor.

buna engel olmak istiyorum :/

@kojiroh

oldu lan aahahaha süper.

seviyorum sizi genşler, harbi niye static yapmışım ki.
nese noob dostu pati sizi çok seviore
Link to comment
Sosyal ağlarda paylaş

Abi public yapıver demişim de saçma olmuş, staticliklerini kaldır yani.

Sen her yeni label yaratışında ona verdiğin parametreleri alıp, static olan arc parametrelerine atıyosun. Bu nedenle bu static olanların aldığı değer, en son eklediğin label'ın değerleri. Çizim esnasında sen bu değerlere eriştiğinde hep sonuncu label'ın değerlerini almış oluyosun dolayısıyla.

static'liği kaldır düzelir
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...