witam
Mam aplet z zakladkami. i w jednej z zakladek chcialbym zrobic wykres rysujacy sie po wcisnieciu guzika "start" (animowany wykres) . ponizej zamiescilem fragmenty funkcji obslugujacej watek i rysujacej.
PROBLEM polega na tym ze gdy sie rysuje to obciaza mi procka na 100% gdyz wykres sie ciagle odrysowuje od poczatku jak zrobic zeby tylko fragment wykresu sie dorysowywal tylko a nie caly wykres??
Czy moze ktos mi pomoc w tym??? (i zeby jeszcze dany fragment wykresu ktory juz sie narysowal nie znikal jesli bedzie dorysowywany dalszy ciag wykresu).
przy pomocy jednego przycisku wlacza sie, pauzuje wykres oraz ponownie rysuje sie wykres, zmienia sie etykieta przycisku (Start, stop)
jestem poczatkujacym w javie wiec nie mam zbyt wielkiego pojecia o tym
/// >>>>>>>>>zdarzenia<<<<<<<<<
public void actionPerformed(ActionEvent e){
if(e.getSource() == but4 ){
if(watek3==null){
flaga=1;
(watek3 = new Thread(this)).start();
but4.setLabel("Stop");
}
else{
watek3=null;
flaga=0;
but4.setLabel("Start");
if(time3==600) watek3=null;
}
}
}
//>>>>>>OBSLUGA WATKU:<<<<<<<<<
public void run(){
while (watek3 != null&&time3<600 &&flaga==1){
try{watek3.sleep(50);} catch (InterruptedException exc){return;}
pjedno.repaint(); //wywolanie podfunkcji w void paint(Graphics g ) odrysowujacej wykres
time3++;
}
if(time3==600){
watek3.interrupt();
time3=0;
but4.setLabel("Animuj");
}
}
//>>>>>>>>FRAGMENT FUNKCJI RYSUJACEJ:<<<<<<<<
siny[77] =(Math.sin(77*0.04) fps33/2 + 80);
sinx[77]=77;
for(int t=78;t<time3+78;t=t+1)
{ g.setColor(Color.RED);
siny[t] =(Math.sin(t0.04) *fps33/2 + 80);
sinx[t]=t;
g2.draw(new Line2D.Double(sinx[t-1]-40, siny[t-1], sinx[t]-40, siny[t]));
//charakterystyka idealna
if(znacz30.isSelected())
{
g.setColor(Color.GREEN);
if(siny[t]>80)
g2.draw(new Line2D.Double(sinx[t-1]-40,siny[t-1]+100, sinx[t]-40, siny[t]+100));
if(siny[t]<=80)
g2.draw(new Line2D.Double(sinx[t-1]-40, pom[0]+100, sinx[t]-40, pom[0]+100));
g.setColor(Color.BLUE);
if(siny[t]>80)
g2.draw(new Line2D.Double(sinx[t-1]-40,pom[0]+230, sinx[t]-40, pom[0]+230));
if(siny[t]<80)
g2.draw(new Line2D.Double(sinx[t-1]-40, siny[t-1]+230, sinx[t]-40, siny[t]+230));
}
/// cha-ka rzeczywista
if(znacz31.isSelected())
{
g.setColor(new java.awt.Color(0, 100, 0));
if(siny[t]>75)
g2.draw(new Line2D.Double(sinx[t-1]-40,siny[t-1]+100, sinx[t]-40, siny[t]+100));
if(siny[t]<75)
g2.draw(new Line2D.Double(sinx[t-1]-40, pom[1]+100, sinx[t]-40, pom[1]+100));
g.setColor(new java.awt.Color(0, 0, 200));
if(siny[t]>75)
g2.draw(new Line2D.Double(sinx[t-1]-40,pom[1]+235, sinx[t]-40, pom[1]+235));
if(siny[t]<75)
g2.draw(new Line2D.Double(sinx[t-1]-40, siny[t-1]+235, sinx[t]-40, siny[t]+235));
}
}
z gory dzieki za pomoc
jak sie synchornizuje watki?? jesli mam np 3 watki rysujace wykresy i jesli wlacze rysowanie w jednej zakladce w aplecie i w drugiej zakladce aplecie i wtrzeciej... zeby dobrze dzialaly watki gdyz odwoluja sie do jednej funkcji rysujacej??
Czy mozna jakos stosowac indexy w jtextarea?? np. R z indeksem 1
czy mozna wywolac w danej funkcji rysujacej:
try{watek3.sleep(50);} catch (InterruptedException exc){return;}
???
jesli tak to jak sie to robi?