W klasie generator, przeliczam w metodzie freqToTime(), wartość wysłaną z przycisku w innej klasie, na czas. W klasie test wywołuję metodę generator.setFreq(wartosc). Wywołując w metodzie setFreq(), freqToTime() otrzymuję w poprawny sposób f i T. Jednak gdzy dochodzi do uruchomienia wątku, w f jest cały czas 0. W czym jest błąd?
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class Generator implements Runnable
{
private boolean power;
private double f,freq ;
private double T;
private Thread watek;
ActionListener actionListener=null;
public Generator()
{
power=false;
watek = new Thread(this);
watek.start();
}
void setFreq(double f)
{
this.f=f;
}
public void genOn()
{
power = true ;
}
public void genOff()
{
power=false;
}
public int freqToTime()
{
double freq=f;
System.out.println("ftt" + freq);
T=(1000/freq);
return (int)T;
}
public void run() {
while(true)
{
while(power)
{
if (actionListener != null)
{
actionListener.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "generator"));
}
try {
Thread.sleep(freqToTime() );
// Thread.sleep(100);
}
catch( InterruptedException e) {};
}
try{Thread.sleep(5);}
catch(Exception e){}
}
}
public void addActionListener(ActionListener listener)
{
actionListener = AWTEventMulticaster.add(actionListener, listener);
}
public void removeActionListener(ActionListener listener)
{
actionListener = AWTEventMulticaster.remove(actionListener, listener);
}
}