JSlider synchron halten

Eule

Mitglied
Hallo Leute,

mein Problem ist folgendes: Ich habe 2 Fenster die paralell angezeigt werden. Ich habe in beiden Fenstern jeweils einen JSlider, welche aber beide den selben Wert änderen sollen. Mein Problem ist, dass ich damit in eine Endlosschleife komme, weil bei jeder Änderung gleich der ChangeListener des anderen Sliders aufgerufen wird. Natürlich sollen beide Slider zu jedem Zeitpunkt den korrekten Wert anzeigen. Hat jemand eine Idee, wie ich das umschiffen kann?

Danke schon mal, Eule
 

XHelp

Top Contributor
Ich weiß nicht, ob die Idee so elegant ist oder nicht, aber:
Du könntest von dem JSlider erben, neue Methode hinzufügen: setValueWithoutEvents, die macht folgendes:
- Variable (die du zusätzlich definierst) events auf false setzen
- setValue aufrufen
setValue wird auch überschrieben und setzt anschließend events auf true.
Dann muss nur noch die Methode (ich glaube) firePropertyChange umgeschrieben werden. die ruft die supermethode auf, nur wenn "events" true ist.

Im großen und ganzen: es wird kein Event geschmissen, wenn du setValueWithoutEvents aufrufst. Somit kommt es auch nicht zu einer Endlosschleife.

... soweit ich dein Problem richtig verstanden habe ...
 
G

Gast2

Gast
Oder du änderst den Wert nur wenn er noch nicht gesetzt ist.
so in etwa:
Java:
if (value != slider.getValue()) slider.setValue(value);

Edit:
Zeig vllt mal deinen Code. Zumindest in diesem kleinen Testcode gibts keinerlei Probleme mit ner Endlosschleife:
Java:
        public static void main(String[] args) {
        JFrame f = new JFrame();

        final JSlider s1 = new JSlider();
        final JSlider s2 = new JSlider();

        s1.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                s2.setValue(s1.getValue());
            }
        });
        s2.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                s1.setValue(s2.getValue());
            }
        });
        f.setLayout(new GridLayout(2, 1));
        f.add(s1);
        f.add(s2);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }
 
Zuletzt bearbeitet von einem Moderator:

Eule

Mitglied
Danke euch Beiden. Hat geklappt.

@XHelp: Genau das wollte ich vermeiden, weil eben in der Zeit auch von außen Dinge auf den Change Listener kommen und ich das ganze recht kompliziert fand für so eine simple Aufgabenstellung.

@EikeB: So habe ich es jetzt versucht und es hat geklappt.
 

musiKk

Top Contributor
Warum so kompliziert? In Swing hat jede Komponente ein Modell, welches die zugehörigen Widgets auf dem Laufenden hält:

Java:
final JSlider s1 = new JSlider();
final JSlider s2 = new JSlider(s1.getModel());

Das reicht völlig zu.

Aber selbst in der ursprünglichen Variante sollte es keine Endlosschleife geben, wenn der [c]PropertyChangeSupport[/c] richtig verwendet wird. Sind der alte und neue Wert gleich (was dann passiert, wenn der zweite Slider wieder ein Event feuern will, obwohl das gar nicht mehr gebraucht wird), dann wird kein Event mehr gefeuert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
D Swing JSlider Tip Anzahl AWT, Swing, JavaFX & SWT 3
J JSlider sichtbar AWT, Swing, JavaFX & SWT 7
J Swing JSlider - Form des Reglers AWT, Swing, JavaFX & SWT 6
J JSlider Color Ticks AWT, Swing, JavaFX & SWT 1
J JSlider - MajorTick AWT, Swing, JavaFX & SWT 0
Z JSlider im Modalen-Fenster AWT, Swing, JavaFX & SWT 0
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
A Slider (JSlider?) AWT, Swing, JavaFX & SWT 7
D JSlider "laggt" nach überschreiben der paint methode AWT, Swing, JavaFX & SWT 2
A Swing JSlider erscheint doppelt AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
A Swing Bestimmte Werte anzeigen JSlider() AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
M JSlider-Wert ändern, ohne ein ChangeEvent auszulösen AWT, Swing, JavaFX & SWT 4
C Aussehen von JSlider ändern AWT, Swing, JavaFX & SWT 7
D Swing jSlider soll selber weiterwandern, je nach zeit der musik AWT, Swing, JavaFX & SWT 5
D JSlider und Textfeld AWT, Swing, JavaFX & SWT 2
C Swing Tickspacing in JSlider AWT, Swing, JavaFX & SWT 3
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
Y JSlider Wert auslesen (Kategorien) AWT, Swing, JavaFX & SWT 2
T jSlider-Value als Float in jLabel ausgeben AWT, Swing, JavaFX & SWT 2
O Swing JSlider mit doppelter Value AWT, Swing, JavaFX & SWT 6
F JSlider Design ändern AWT, Swing, JavaFX & SWT 6
D Swing JSlider AWT, Swing, JavaFX & SWT 11
B JSlider - Wert am Mouszeiger anzeigen lassen AWT, Swing, JavaFX & SWT 6
J Swing jSlider nur auf bestimmte werte beschränken AWT, Swing, JavaFX & SWT 15
X Audio Player: Fenster mit Play/Stop-Button erstellen, mit JSlider Lautstärke ändern AWT, Swing, JavaFX & SWT 6
R JSlider AWT, Swing, JavaFX & SWT 9
M Swing JSlider, Popup-Box AWT, Swing, JavaFX & SWT 3
J JSlider mit Double Werten AWT, Swing, JavaFX & SWT 5
J JSlider auf JTextPane? AWT, Swing, JavaFX & SWT 2
M Jslider Beschriftung AWT, Swing, JavaFX & SWT 6
R JLabel und JSlider dynamisch erzeugen? AWT, Swing, JavaFX & SWT 3
E jSlider und ChangeListener AWT, Swing, JavaFX & SWT 2
S JSlider Track Breite und Farbe AWT, Swing, JavaFX & SWT 2
T Swing JSlider und Adjustment-Listener wollen nicht so recht AWT, Swing, JavaFX & SWT 2
O JSlider - wie unterscheide ich mit Maus verändert und durch setValue verändert. AWT, Swing, JavaFX & SWT 16
T JSlider: ChangeListener löst dreimal aus? AWT, Swing, JavaFX & SWT 4
B JSlider in JCombobox AWT, Swing, JavaFX & SWT 9
J JSlider wird nicht neugezeichnet AWT, Swing, JavaFX & SWT 8
J Einen JSlider ähnlich wie in OO3 AWT, Swing, JavaFX & SWT 5
G JSlider in Applet AWT, Swing, JavaFX & SWT 4
K Unterschiedliches Aussehen der JSlider? AWT, Swing, JavaFX & SWT 4
I Listener für einen JSlider AWT, Swing, JavaFX & SWT 1
G beschriftung von JSlider AWT, Swing, JavaFX & SWT 7
H JSlider mit 2 Werten AWT, Swing, JavaFX & SWT 7
L JSlider Beschriftung AWT, Swing, JavaFX & SWT 1
A JSlider umdrehen AWT, Swing, JavaFX & SWT 15
D JSlider und JMF player verbinden AWT, Swing, JavaFX & SWT 6
J JSlider regaiert unter Java 1.6 nicht mehr AWT, Swing, JavaFX & SWT 7
N JSlider: Kosmetik - snapToTicks AWT, Swing, JavaFX & SWT 3
T JComponents abändern/modifizieren z.b. JSlider AWT, Swing, JavaFX & SWT 2
N Nicht linearer JSlider! AWT, Swing, JavaFX & SWT 4
T JSlider getValue() erst nach dem Loslassen des Mauszeigers AWT, Swing, JavaFX & SWT 3
Z JSlider-Knob wenden AWT, Swing, JavaFX & SWT 8
L JSlider stumm geworden? AWT, Swing, JavaFX & SWT 2
I JSlider - klick ignorieren AWT, Swing, JavaFX & SWT 4
I JSlider-Schieberegler AWT, Swing, JavaFX & SWT 7
T JSlider Schiebereglerbild ändern AWT, Swing, JavaFX & SWT 4
U JSlider - Probleme bei der Darstellung AWT, Swing, JavaFX & SWT 3
H ChangeListener für JSlider AWT, Swing, JavaFX & SWT 6
P JSlider automatisch bewegen AWT, Swing, JavaFX & SWT 3
G JSlider AWT, Swing, JavaFX & SWT 2
S JavaFX Mehrere TreeTableView's synchron scrollen AWT, Swing, JavaFX & SWT 0
P Liste mit Datenobjekt synchron halten AWT, Swing, JavaFX & SWT 2
maddin86 Eingabe in Textfeld 1 synchron in Textfeld 2 ausgeben AWT, Swing, JavaFX & SWT 9
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
X JavaFX ObservableList aktuell halten AWT, Swing, JavaFX & SWT 6
K JavaFX Linie immer in der Mitte der Szene halten AWT, Swing, JavaFX & SWT 12
G JavaFX Sub-Fenster im Vordergrund halten AWT, Swing, JavaFX & SWT 5
B Event Handling jButton gedrückt halten als mehrmaliges Drücken interpretieren AWT, Swing, JavaFX & SWT 4
H Swing Den Button einer JToolBar gedrückt halten AWT, Swing, JavaFX & SWT 9
M JFrame im Vordergrund halten AWT, Swing, JavaFX & SWT 4
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
K button gedrückt halten AWT, Swing, JavaFX & SWT 4
A Dialog im Vordergrund halten AWT, Swing, JavaFX & SWT 41

Ähnliche Java Themen

Neue Themen


Oben