Hallo zusammen,
ich habe einen für mich unerklärlichen Fehler in meinem Programm, der nachfolgende Code zeigt den Fehler auch. Denn wenn ich load über einen Button mit ActionListener aufrufe (1. load) ändert sich die Farbe des Anzeigebuttons (button) nicht, wird allerdings load direkt im Programm verwendet (2. load) funktioniert es einwandfrei. Daher die Frage an euch, wie ich das auch über den Button erreichen könnte. An fehlenden repaints sollte es nicht liegen, da es auch ohne diese funktioniert.
Für eure Hilfe bin schon jetzt sehr dankbar!
Gruß
Stefan
ich habe einen für mich unerklärlichen Fehler in meinem Programm, der nachfolgende Code zeigt den Fehler auch. Denn wenn ich load über einen Button mit ActionListener aufrufe (1. load) ändert sich die Farbe des Anzeigebuttons (button) nicht, wird allerdings load direkt im Programm verwendet (2. load) funktioniert es einwandfrei. Daher die Frage an euch, wie ich das auch über den Button erreichen könnte. An fehlenden repaints sollte es nicht liegen, da es auch ohne diese funktioniert.
Für eure Hilfe bin schon jetzt sehr dankbar!
Gruß
Stefan
Java:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Test_GUI {
static JFrame frame;
static JButton button = new JButton();
public static void main(String[] args) {
frame = new JFrame("NNVT - Neuronales Netz Visualisierungs Tool");
frame.setSize(800, 800);
frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
JButton test = new JButton("Test");
test.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
load(); // 1. load
frame.repaint();
}
});
test.setSize(100,50);
test.setLocation(300, 350);
button.setSize(100,50);
button.setLocation(300, 300);
frame.add(test);
frame.add(button);
frame.setVisible(true);
load(); // 2. load
}
public static void load()
{
for(int i=0;i<101;i++)
{
if(i%2==0)
button.setBackground(Color.BLUE);
else
button.setBackground(Color.LIGHT_GRAY);
button.repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
frame.repaint();
}
}