Hallo,
hab da eine kleine Leuchtdiodenkette die auch wunderbar funktioniert. Jetzt habe ich einen Scrollbar hinzugefügt mit dem man die Geschwindigkeit der Leuchtdiodenkette verändern können soll.
Leider funktioniert das nicht. Das Programm wird zwar sauber ausgeführt, doch beim verändern des Scrollbars bleibt die Geschwindigkeit gleich. Hat jemdand zufällig eine Idee an was das liegen könnte?
hab da eine kleine Leuchtdiodenkette die auch wunderbar funktioniert. Jetzt habe ich einen Scrollbar hinzugefügt mit dem man die Geschwindigkeit der Leuchtdiodenkette verändern können soll.
Leider funktioniert das nicht. Das Programm wird zwar sauber ausgeführt, doch beim verändern des Scrollbars bleibt die Geschwindigkeit gleich. Hat jemdand zufällig eine Idee an was das liegen könnte?
Code:
import java.awt.*;
import java.awt.event.*;
public class Listing3410 extends Frame implements Runnable, AdjustmentListener {
private static final int NUMLEDS = 20;
private int SLEEP = 20;
private static final int LEDSIZE = 10;
private static final Color ONCOLOR = new Color (255,0,0);
private static final Color OFFCOLOR = new Color (100,0,0);
private Thread th;
private int switched;
private int dx;
public Scrollbar sc;
public static void main (String[] args){
Listing3410 frame = new Listing3410();
frame.setSize(270,150);
frame.setLayout(null);
frame.setVisible(true);
frame.startAnimation();
}
public Listing3410(){
super("Leutdiodeneffekt");
setBackground(Color.lightGray);
Scrollbar sc = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,100);
sc.setBounds(75,25,100,25);
sc.addAdjustmentListener(this);
add(sc);
addWindowListener(new WindowClosingAdapter(true));
}
public void adjustmentValueChanged(AdjustmentEvent e){
SLEEP2 = sc.getValue();
}
public void startAnimation(){
th = new Thread(this);
th.start();
}
public void run(){
switched = -1;
dx = 1;
while (true) {
repaint();
try {
Thread.sleep(SLEEP);
}
catch (InterruptedException e){
}
switched += dx;
if (switched < 0 || switched > NUMLEDS -1){
dx = -dx;
switched += 2*dx;
}
}
}
public void paint(Graphics g){
for (int i = 0; i < NUMLEDS; i++){
g.setColor(i==switched ? ONCOLOR : OFFCOLOR);
g.fillOval(10+i*(LEDSIZE+2),80,LEDSIZE,LEDSIZE);
}
}
public void update(Graphics g){
paint(g);
}
}