Hallo Community,
hoffentlich könnt ihr mir helfen. Ich bin nämlich inzwischen echt verzweifelt
Für ein Programm empfang ich drei Werte und diese sollen grafisch als Balken mit der entsprechenden relativen Häufigkeit dargestellt werden.
Der Balken ist ein Panel im BoxLayout, welcher drei Kind-Panels enthält. Die Methode soll die Verhältnisse live anpassen (was sie im Grunde auch tut )
Das ganze wird von einem Timer gesteuert
Allerdings ist mein Problem, dass zwar alle Berechnungen richtig sind, es jedoch nur bei einer erneuten iteration tatsächlich neu gezeichnet wird.
Ich habe schon versucht das Elternpanel mittels revalidate und repaint neu zeichnen zu lassen, jedoch ohne erfolg.
Dankeschön für eure Hilfe
hoffentlich könnt ihr mir helfen. Ich bin nämlich inzwischen echt verzweifelt
Für ein Programm empfang ich drei Werte und diese sollen grafisch als Balken mit der entsprechenden relativen Häufigkeit dargestellt werden.
Java:
public void zeichnen_m(int h1, int h2, int h3){
double ges = h1 + h2 + h3;
double rh1, rh2, rh3;
rh1 = h1/ges;
rh2 = h2/ges;
rh3 = h3/ges;
int x = p_dark_green_m.getX();
int y = p_dark_green_m.getY();
int h = p_m_Bewertung.getHeight();
l_dark_green_m.setText("" + h1);
l_yellow_m.setText("" + h2);
l_dark_red_m.setText("" + h3);
int w1 = 0; p_dark_green_m.setBounds(x+w1, y, (int)(p_m_Bewertung.getWidth()*rh1), h);
int w2 = p_dark_green_m.getWidth(); p_yellow_m.setBounds(x+w2, y, (int)(p_m_Bewertung.getWidth()*rh2), h);
int w3 = w2 + p_yellow_m.getWidth(); p_dark_red_m.setBounds(x+w3, y, (int)(p_m_Bewertung.getWidth()*rh3), h);
}
Der Balken ist ein Panel im BoxLayout, welcher drei Kind-Panels enthält. Die Methode soll die Verhältnisse live anpassen (was sie im Grunde auch tut )
Das ganze wird von einem Timer gesteuert
Java:
Timer schedule = new Timer(1000, taskPerformer);
schedule.start();
ActionListener taskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int[] bewertung_m = controller.getBewertung_M();
int[] kritik_m = controller.getKritik_M();
zeichnen_m(bewertung_m[0], bewertung_m[1], bewertung_m[2]);
setkritik_m(kritik_m[0], kritik_m[1], kritik_m[2], kritik_m[3]);
int[] bewertung_f = controller.getBewertung_F();
int[] kritik_f = controller.getKritik_F();
zeichnen_f(bewertung_f[0], bewertung_f[1], bewertung_f[2]);
setkritik_f(kritik_f[0], kritik_f[1], kritik_f[2], kritik_f[3]);
l_Status.setText("Connected with [" + controller.getConnections() + "] Client(s)");
}
};
Allerdings ist mein Problem, dass zwar alle Berechnungen richtig sind, es jedoch nur bei einer erneuten iteration tatsächlich neu gezeichnet wird.
Ich habe schon versucht das Elternpanel mittels revalidate und repaint neu zeichnen zu lassen, jedoch ohne erfolg.
Dankeschön für eure Hilfe