JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern

patrick-89

Mitglied
Hallo zusammen,

kurz zur Info. Ich bin gerade dabei mir eine GUI fuer meinen Equalizer zu erstellen. Das ganze laeuft auf einem Touchdisplay.

Ich verwende die normalen Sliders von FX.
Zu meinem Problem:

Ich moechte eine Art Selektierung fuer die Sliders erstellen. Das ganze soll so funktionieren, das man auf einen Slider klickt damit dieser dann Selektiert ist. Wenn dieser dann selektiert ist, dann ich ihn ueber 2 Buttons incrementieren oder decrementieren. Leider habe ich das Problem, das wenn ich auf den Slider klicke, das sich dann auch schon die Value aendert bzw. sich der Thumb schon verschiebt. Natuerlich sollte man den Slider auch mit dem Finger verschieben koennen aber erst nach sagen wir mal 500ms fuer den Anfang. Vorher sollte sich die Value nicht aendern.
Grund ist, dann ich mit den Button sehr viel genauer die Value einstellen kann als mit meinem Finger ;)

Ich habe schon einiges ausprobiert mit verschiedenen Listenern, nur hat das alles leider nix gebracht -.-...

Ich hoffe das Ihr mir weiterhelfen koennt!!!!

Besten Dank.

Gruss
Patrick
 

Cromewell

Top Contributor
Mach doch einfach eine If-Bedingung in den Listener vom Slider, sodass er sich erst verschiebt, sobald er an einer bestimmten Position ist. Und beim Button halt pro drücken die Position erhöhen/senken.
 

Cromewell

Top Contributor
Java:
slider.valueProperty().addListener(new ChangeListener<Number>() {
    public void changed(ObservableValue<? extends Number> ov,
        Number old_val, Number new_val) {
            if(slider. ... >= ...){
                //code
            }
    }
});
Also ca. so :)
 

patrick-89

Mitglied
Ja das habe ich auch schon versucht, nur geht das nicht...

Das ChangeEvent besagt ja das sich die Value geaendert hat. Da ist das also schon passiert. Dort kann man dann den neuen Wert nicht mehr auf den alten Wert setzen...

slider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) {
if(bedingung == true){
slider.setValue(old_val);
}
}
});

Das funktioniert so nicht...

Es gibt da bestimmt eine andere Loesung...

Sorry, wie fuege ich denn Code ein??? Sehe keinen Button..
 
Zuletzt bearbeitet:

Cromewell

Top Contributor
Es gibt wahrscheinlich eine bessere Lösung, aber erstmal funktioniert das:
Java:
Slider slider = new Slider(0, 100, 0);
final long beforeTime = System.currentTimeMillis();
slider.valueProperty().addListener((observable, oldValue, newValue) -> {
    if(System.currentTimeMillis()-beforeTime < 3000 && newValue.intValue()-oldValue.intValue() != 1){
        slider.setValue(0);
    }else{
        slider.setValue(newValue.intValue());
    }
});

Button increase = new Button("add");
increase.setOnAction(e->{
    slider.setValue(slider.getValue()+1);
});

PS: Hier kann man nach 3s ohne Button bewegen.
 
Zuletzt bearbeitet:

patrick-89

Mitglied
Ja stimmt so in dieser Art hatte ich es auch schon probiert, leider wird die Value dann auf 0 gesetzt. Was dann nicht der richtige Wert ist.
 

patrick-89

Mitglied
Nein, nein... Man soll die erste Zeit den Slider nicht per Touch bewegen duerfen. Der Button ist davon vollkommen unabhaengig, das ist ja einen extra Geschichte... Mir geht es vielmehr darum, wie kann ich verhindern das sich der Slider bewegt...
 

Cromewell

Top Contributor
Ich verstehe nicht ganz, was du willst. Wenn ich den Code, den ich gepostet habe, ausführe, dann kann ich den Slider nicht bewegen - nur per Button - und wenn die Zeit (in meinem Code 3 Sekunden) vorüber ist, kann man den Slider auch normal bewegen?!
 

Cromewell

Top Contributor
Das ist ja richtig, aber du setzt ja immer wieder die Value auf 0. Wenn jetzt der Slider schon auf der Value 50 steht, dann wuerde der Slider doch wieder auf 0 springen oder nicht???
Ah, ich habe nicht viel geschlafen, man merkts - sry x)

Dann mach noch eine private double Variable position; Und in der Buttonfunktion setzt du sie dem values des Sliders gleich :)
Und anstelle von 0 dann position.
 

patrick-89

Mitglied
Verstehe leider nicht so ganz wie du das meinst.... Aber lassen wir einfach mal den Button oder die beider Buttons außen vor. Die haben eigentlich für die Lösung keine bewandnis.
 

Cromewell

Top Contributor
Java:
private double position;

@Override
public void start(Stage primaryStage) throws Exception {
    Group root = new Group();
    VBox pane = new VBox(30);
    root.getChildren().addAll(pane);
    primaryStage.setScene(new Scene(root, 400, 400));

    Slider slider = new Slider(0, 100, 0);
    final long beforeTime = System.currentTimeMillis();
    slider.valueProperty().addListener((observable, oldValue, newValue) -> {
        if(System.currentTimeMillis()-beforeTime < 7000 && newValue.intValue()-oldValue.intValue() != 1){
            slider.setValue(position);
        }else{
            slider.setValue(newValue.intValue());
        }
    });

    Button increase = new Button("add");
    increase.setOnAction(e->{
        slider.setValue(slider.getValue()+1);
        position = slider.getValue();
    });


    pane.getChildren().addAll(slider, increase);

    primaryStage.show();
}

Die haben eigentlich für die Lösung keine bewandnis.
Doch - dort wird position gesetzt.
 

Patrick89

Mitglied
Danke fuer den Ansatz, aber genau so hatte ich es auch schon, es hat aber nie so richtig funktioniert....

Teste deinen Code mal so: Versuche deinen Slider mal hin und her zu schieben bis er sich bewegt und dann versuche nochmal ohne den Button zu druecken deinen Slider zu bewegen. Du wirst sehen das der sich dann jedes mal sofort verschiebt...

Ich habe deinen Code mal so ueberarbeitet, das er fuer mich passend ist bzw. so wie ich mir das Verhalten wuensche ;)

Versuch mal mit meinem Code folgendes:

Versuche den Slider zu bewegen bis er sich bewegt, dann lass los und versuche es noch mal. Du wirst sehen es ist jedes mal das gleiche Verhalten (Bewegt sich erst nach 1sek). Dann klicke mal ein bisschen auf den Button rum und versuche danach wieder den Slider zu bewegen... Es ist wieder da gewuenschte Verhalten, das der Slider sich erst nach 1sek bewegt...

Die Zeit wird natuerlich noch verkuerzt, aber als Anschauung gut geeignet ;)

Java:
package application;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    private double position;
    private long beforeTime;
    boolean isNewBeforeTime = true;
    boolean isButtonPressed = false;

    @Override
    public void start(Stage primaryStage) {
        Group root = new Group();
        VBox pane = new VBox(30);
        root.getChildren().addAll(pane);
        primaryStage.setScene(new Scene(root, 400, 400));

        Slider slider = new Slider(0, 100, 0);
        slider.valueProperty().addListener((observable, oldValue, newValue) -> {

            if (isButtonPressed) {
                return;
            }
            if (isNewBeforeTime) {
                beforeTime = System.currentTimeMillis();
                isNewBeforeTime = false;
            }

            if (System.currentTimeMillis() - beforeTime < 1000) {
                slider.setValue(position);
            } else {
                position = newValue.doubleValue();
                slider.setValue(position);
            }
        });

        slider.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {

            @Override
            public void handle(MouseEvent event) {
                isNewBeforeTime = true;

            }
        });

        Button increase = new Button("Increase");
        increase.setOnAction(e -> {
            isButtonPressed = true;
            position = slider.getValue() + 1;
            slider.setValue(position);
            isButtonPressed = false;
        });

        Button decrease = new Button("Decrease");
        decrease.setOnAction(e -> {
            isButtonPressed = true;
            position = slider.getValue() - 1;
            slider.setValue(position);
            isButtonPressed = false;
        });

        pane.getChildren().addAll(slider, increase, decrease);

        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
 

Cromewell

Top Contributor
Vielleicht reden wir aneinander vorbei. Mach du einfach, wie du es für richtig hälst x)
Denn mit deinem Code kann ich den Slider gar nicht per Maus bewegen.
Wenn du jetzt einen Ansatz oder eine Lösung hast ist ja gut.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JavaFX Slider in JavaFX beide Seiten beschriften AWT, Swing, JavaFX & SWT 2
Juelin StringGrid in SceneBuilder und javaFX AWT, Swing, JavaFX & SWT 2
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
MiMa SwingFXUtils in JavaFX 20 AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenstertitel zu klein. AWT, Swing, JavaFX & SWT 1
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
Hatsi09 Javafx Neuladen von ImageView und MediaView AWT, Swing, JavaFX & SWT 3
Maxim6394 JavaFX Umlaute in JavaFX GUI AWT, Swing, JavaFX & SWT 12
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
melaniemueller Taschenrechner JavaFX AWT, Swing, JavaFX & SWT 4
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
thor_norsk JavaFX - Grafikkarte AWT, Swing, JavaFX & SWT 7
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
B JavaFX Sprachumschaltung mit Button auf der HMI AWT, Swing, JavaFX & SWT 6
H JavaFX Fehlende JavaFX Package AWT, Swing, JavaFX & SWT 10
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
_user_q Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
S JavaFX: voneinander abhängige TextFields AWT, Swing, JavaFX & SWT 33
M Gluon will JavaFX in den Browser stecken AWT, Swing, JavaFX & SWT 0
H javafx application does not exist AWT, Swing, JavaFX & SWT 16
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
izoards JavaFX TextFlow - Sonderzeichen AWT, Swing, JavaFX & SWT 1
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
MiHimbert javaFX openfx (17) datepicker AWT, Swing, JavaFX & SWT 3
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Taschenrechner mit SceneBuilder AWT, Swing, JavaFX & SWT 12
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
M Zufallsgenerator bei JavaFx AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
L JavaFX JavaFX, MVVM und SceneBuilder AWT, Swing, JavaFX & SWT 4
S JavaFx Album AWT, Swing, JavaFX & SWT 137
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX/ Taskmenu / UML Klassendiagramm AWT, Swing, JavaFX & SWT 2
Davee JavaFX JavaFX Jar ausführbar jedoch nicht alle Stages AWT, Swing, JavaFX & SWT 3
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
C MouseEvent JavaFX AWT, Swing, JavaFX & SWT 4
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
G javafx build.fxbuild in eclipse und ANT AWT, Swing, JavaFX & SWT 9
M Kollisionensbehandlung mit JavaFX AWT, Swing, JavaFX & SWT 1
N JavaFX - Toolkit not initialized AWT, Swing, JavaFX & SWT 6
G JavaFX , Duplicate erzeugt aber ich weis nicht wo AWT, Swing, JavaFX & SWT 4
K Javafx Plugin (javafx:jlink) mit moditect Plugin nutzen ... AWT, Swing, JavaFX & SWT 5
J Saubere Trennung Model, View, Controller Javafx AWT, Swing, JavaFX & SWT 10
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
Z JavaFX JavaFX Spinner AWT, Swing, JavaFX & SWT 1
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28

Ähnliche Java Themen

Neue Themen


Oben