Ich lerne über javafx ScrollBar
. Ich weiß wenig über ScrollPane
, aber ich möchte alle Kontrollen greifen. Hier habe ich versucht, javafx ScrollBar
zu verwenden. aber es funktioniert nicht.Was ist Rule ScrollBar in JavaFX zu verwenden?
Hauptklasse:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Parent;
import javafx.stage.Stage;
import javafx.fxml.FXMLLoader;
import java.io.IOException;
public class ScrollBarExample extends Application{
@Override
public void start(Stage stage)throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("scroll.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
Controller-Klasse:
import javafx.scene.control.Label;
import javafx.scene.control.ScrollBar;
import javafx.fxml.FXML;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
public class ScrollController{
@FXML private Label label;
@FXML private ScrollBar scroll;
public void initialize(){
scroll.valueProperty().addListener(new ChangeListener<Number>(){
@Override
public void changed(ObservableValue<? extends Number> value, Number oldValue, Number newValue){
label.setLayoutX(newValue.doubleValue());
}
});
}
}
FXML Code:
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.ScrollBar?>
<?import javafx.scene.layout.Pane ?>
<?import javafx.scene.control.Label ?>
<GridPane prefWidth="300" prefHeight="250" xmlns:fx="http://javafx.com/fxml" fx:controller="ScrollController" >
<children>
<ScrollBar fx:id="scroll" min="0" max="100" GridPane.rowIndex="0" GridPane.columnIndex="0" />
<Label fx:id="label" text="Move Me" GridPane.rowIndex="1" GridPane.columnSpan="2" GridPane.columnIndex="0" />
</children>
</GridPane>
Was sind die zu verwendenden Regeln ScrollBar
? Auf welche Elemente könnte es zurückgreifen oder nicht?
fabian können Sie den Unterschied zwischen layoutX und translateX erklären? Ich habe gesucht, aber die einfache Antwort für mich nicht gefunden. –
@Nothing: 'layoutX' ist der Ort, an dem der Knoten platziert wird, bevor Transformationen angewendet werden; "Transformationseigenschaften", wie 'translateX' können ändern, wo/wie der Knoten tatsächlich gezeichnet wird. Wenn 'translateX' die einzige" Transformationseigenschaft "ist, beginnt die Position, die die Beschriftung für das Layout hat, bei' x = layoutX', aber die Position, an der sie tatsächlich gezeichnet wird, ist 'x = layoutX + translateX'; siehe auch ['Node.boundsInParent'] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#boundsInParentProperty) – fabian
Kannst du einen Blick darauf werfen? Ich zeichne ein Bild zum Verstehen. http://imgur.com/a/vRlOj Ich habe Recht? oder kannst du bitte ein solches Bild zeichnen? –