Vielen Dank ! :-)
Für mich rechts, wenn ich am Ende, wenns läuft ein Danke kommt ;)
public GUI() {
grafik = new Linien();
JPanel panel = new Linien();
panel.setBounds(77, 34, 137, 140);
contentPane.add(panel);
panel.setBackground(Color.ORANGE);
}
Da ist dein Problem. Du erzeugst 2 Linien-Instanzen, 'grafik' und 'panel'. Dann stellst du an 'panel' Daten ein und hängst es in den Komponenten-Baum. Mit 'grafik' machst du an sonsten nichts. D.h. das gammelt einfach so im Speicher rum.
Okay im Change-Event änderst du noch den d-Wert von 'grafik'.
> ~~~java
> public class Linien extends JPanel
> {
> public int d;
>
> public Linien()
> {
> System.out.println("Lininen-d-Wert: "+d);
>
> }
> public void paintComponent(Graphics g){
> super.paintComponent(g);
> g.fillOval(10,10,d ,d);
> repaint();
> }
> }
>
Okay, du gibst d einmal bei der Erzeugung der Instanz aus, das heißt dein System.out.println wird niemals den Wert anzeigen, den die Instanz hat, wenn du den Slider bewegst.
Wäre die Ausgabe in paint() würdest du sehen, das sich 'd' niemals ändert.
Das ist auch ganz logisch. Warum?
paint() wird nur für Komponenten aufgerufen, die auch im Komponenten-Baum eingehängt und somit sichtbar sind.
Noch mal kurz hoch scrollen. 'panel' ist eingehängt und somit sichtbar, 'grafik' nicht.
Folglich solltest du in deinem GUI-Konstruktor einfach 'panel' weder erzeugen, noch deklarieren, sondern direkt mit 'grafik' arbeiten.
MfG
bubble
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye