Ich habe ein Problem mit der Hintergrundfarbe des JtoggleButton dynamisch einstellen. Ich möchte, dass JtoggleButton wie eine LED blinkt, zu einer bestimmten Zeit wie 500ms. Ich habe versucht, auch die paintComponent-Methode zu überschreiben. Aber konnte auch nicht erfolgreich sein. Ich stecke fest. Hier ist mein Code Danke für die Hilfe.Jtogglebutton Hintergrund dynamisch einstellen
Led Klasse:
public class Led extends JToggleButton {
private Color okColor = Color.GREEN;
private Color notOkColor = Color.RED;
private static int BLINK_FREQUENCY=500;
public Led() {
this.setPreferredSize(new Dimension(50, 50));
timer.start();
}
Timer timer=new Timer(BLINK_FREQUENCY, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setBackground(okColor);
System.out.println("ok");
try {
Thread.sleep(BLINK_FREQUENCY);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
setBackground(notOkColor);
System.out.println("notok");
}
});
}
Mainframe-Klasse:
public class MainFrame {
private JFrame frame;
private Led led;
private JPanel panel;
public MainFrame() {
initializeComponents();
}
private void initializeComponents() {
frame = new JFrame("Blinking Led");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
{
panel = new JPanel();
led = new Led();
panel.add(led);
frame.add(panel);
}
}
public void setVisible(boolean visible) {
frame.setVisible(visible);
}
}
1) Für eine bessere Hilfe früher, Posten [MCVE] oder [Kurz, Self Contained, Korrekt Beispiel] (http://www.sscce.org/). 2) Siehe [Erkennung/Behebung für die hängende, nahe Klammer eines Codeblocks] (http://meta.stackexchange.com/q/251795/155831) für ein Problem, das nicht mehr gestört werden konnte. –
Ich bin mir nicht sicher, ob ich richtig verstehe, Sie möchten, dass die Farbe alle 500 ms wechselt oder Sie möchten, dass der Status der Taste wechselt und dann den Farbschalter auslöst? –
Ich möchte die Farbe der Taste alle 500ms wechseln. Staat ist nicht wichtig. –