JSlider

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,

wenn auf meinem Slider der Wert geändert wird, dann wird die if- Schleife der unteren Methode aufgerufen, so weit so gut.
Mein Problem ist jetzt, dass, wenn ich einen Wert setze mit barGraph.setValue(), dann wird auch die if- Schleife der unteren Methode aufgerufen.

Was ich möchte ist, dass die if- Abfrage nur aufgerufen wird wenn ich mit der Maus den JSlider- Adjuster wieder auslasse.

Wie mache ich das am einfachsten (mit einem MouseListener oder gibts da eine Methode??


Vielen Dank für etwaiige Antworten.

lg




Code:
 public void stateChanged(ChangeEvent evt) 
	{
        if (!barGraph.getValueIsAdjusting()) 
            {        
            myWert = barGraph.getValue();
            }            	
	}
 

PollerJava

Top Contributor
Also beim MouseListener kann man den JSlider leider nicht anmelden.

Hat jemand vielleicht eine Idee, wie ich das machen könnte?

lg
 
S

SlaterB

Gast
ich persönlich habe da mal mit boolean-Felder gearbeitet,
wenn das Programm den Slider aufruft ein Flag setzen, am Ende des Aufrufs wieder ausschalten,

und je nach Flag unterschiedlich reagieren,
ist nicht schön und bei manchen Komponenten sehr schlecht, wenn diese erst viel später (nach allen anderen zu bearbeitenden Events) reagieren
 

PollerJava

Top Contributor
wie kann ich eigentlich irgendwo im ProgrammCode abfragen, ob ein MouseKey (linke MausTaste) gedrückt ist,

in einer MouseListener- Methode gehts ja:

public void mouseEntered(MouseEvent e)
{
if (e.getID() == e.BUTTON1) tuewas;
}

aber irgendwo im Programm code?


Vielen Dank für die Antworten.

lg
 

PollerJava

Top Contributor
SlaterB hat gesagt.:
ich persönlich habe da mal mit boolean-Felder gearbeitet,
wenn das Programm den Slider aufruft ein Flag setzen, am Ende des Aufrufs wieder ausschalten,

und je nach Flag unterschiedlich reagieren,

Ja aber ich weiß ja nicht, ob ich die Methode aufrufe, weil ich mit der Maus den Slider gezogen habe oder ob ich irgendwo einen Wert des Sliders gesetzt habe und deswegen die Methode aufgerufen wurde?

lg
 
S

SlaterB

Gast
setX(true);
setSliderWert(4) ...... interne Operation: prüfe ob x gesetzt ist .........
setX(false)
 
S

SlaterB

Gast
die Methode stateChanged() wird intern aufgerufen, auf zwei Arten von Ereignissen hin,
entweder war ursprünglich ein MausEvent oder ein Kommando in deinem Programm:
setSliderWert(4)



um nun die Quelle zu unterscheiden sorgst du dafür, dass während deines Aufrufes ein Flag x gesetzt ist,
indem du davor
setX(true);
aufrufst und danach
setX(false);

so ist dafür gesorgt, dass während der Bearbeitung von stateChanged() für dein Kommando
setSliderWert(4)
x gesetzt ist

was war daran jetzt bitte unklar?!
 

byte

Top Contributor
Code:
slider.addMouseListener(new MouseAdapter() {
  public void mouseReleased(MouseEvent e) {
    // hier dein Methodenaufruf
  }
});
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben