JavaFX Label oder Imageview anzeigen mit Buttonklick

Hallo,

ich habe ein Problem beim coden und komme nicht mehr weiter. Jetzt hab ich gedacht ich stelle es mal hier online mit der Hoffnung das mir von euch jemand helfen kann.
ich hab ein code geschrieben wo ich Bilder in einer ScrollPane anzeigen lasse. Links daneben sind Buttons und das ganze wird in einer Szene dargestellt.
Jetzt würde ich gerne über einen Buttonklick zu dem gewünschten Bild springen und damit hänge ich.
Wenn ich für jedes Bild eine neue Scene anlege ist es kein Problem die Bilder anzuzeigen.
Wie geht es in der ScrollPane?
anbei der Code:
Wäre cool wenn mir von euch jemand helfen könnte.

Danke und Gruss

Aaron

Java:
package application;
    

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.ScrollEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;


public class Main extends Application implements EventHandler<ActionEvent> {
    
    Button startseite, eis, schloss, weiter, zurück;
    
    Label malaga1, malaga2;
    
    Image image;
    
    ImageView imageView;
    
    ScrollPane scrollen;
    
    
    
    
    
    @Override
    public void start(Stage primaryStage) {
        try {
            
            
            //Labels
            //Bilder Malaga
            malaga1= new Label();
            Image malaga01= new Image(getClass().getResourceAsStream("Malaga1.jpg"));
            malaga1.setGraphic(new ImageView(malaga01));
            malaga1.setId("1");
            
            
            malaga2= new Label();
            Image malaga02= new Image(getClass().getResourceAsStream("Malaga2.jpg"));
            malaga2.setGraphic(new ImageView(malaga02));
            malaga2.setId("2");
            
            //ImageView
            image= new Image(getClass().getResourceAsStream("Malaga2.jpg"));
            imageView = new ImageView(image);
            imageView.setImage(image);
            
            
            //Buttons
            
            //zurück
            zurück= new Button("<<zurück");
            zurück.setOnAction(this);
            zurück.setPadding(new Insets(10,10,10,10));
            zurück.setStyle("-fx-font: 12 arial; -fx-base: #CCCCCC;");
            
            
            //weiter
            weiter= new Button("weiter>>");
            weiter.setOnAction(this);
            weiter.setPadding(new Insets(10,10,10,10));
            weiter.setStyle("-fx-font: 12 arial; -fx-base: #CCCCCC;");
            
            
            //Schloss
            schloss= new Button("Schloss");
            schloss.setOnAction(this);
            schloss.setPadding(new Insets(10,10,10,10));
            schloss.setStyle("-fx-font: 22 arial; -fx-base: #CCCCCC;");
            schloss.setPrefSize(180, 15);
            
            //Eis
            eis= new Button("Eis");
            eis.setOnAction(this);
            eis.setPadding(new Insets(10,10,10,10));
            eis.setStyle("-fx-font: 22 arial; -fx-base: #CCCCCC;");
            eis.setPrefSize(180, 15);
            
            //startseite
            startseite= new Button("Startseite");
            startseite.setOnAction(this);
            startseite.setPadding(new Insets(10,10,10,10));
            startseite.setStyle("-fx-font: 22 arial; -fx-base: #CCCCCC;");
            startseite.setPrefSize(180, 15);
            startseite.setVisible(false);
            
            
            //Start Anordung/ Aufteilung
            //HauptBorderPane
            
            BorderPane root = new BorderPane();
            Scene scene = new Scene(root,400,400);
            
            //Button anordnung
            //VBox
            VBox vBox = new VBox();
            vBox.setSpacing(10);
            vBox.setAlignment(Pos.CENTER);
            vBox.getChildren().addAll(schloss, eis, startseite);
            
            
            
            
            
            BorderPane border = new BorderPane();
            border.setLeft(zurück);
            border.setRight(weiter);
            border.setCenter(vBox);
            BorderPane.setAlignment(zurück, Pos.BOTTOM_LEFT);
            BorderPane.setAlignment(weiter, Pos.BOTTOM_RIGHT);
            BorderPane.setAlignment(vBox, Pos.CENTER);
            
            
            //VBox Labels
            VBox vBoxLabel = new VBox();
            vBoxLabel.setSpacing(30);
            vBoxLabel.setAlignment(Pos.CENTER);
            vBoxLabel.getChildren().addAll(malaga1, malaga2, imageView);
            
            scrollen = new ScrollPane();
            scrollen.setVbarPolicy(ScrollBarPolicy.ALWAYS);
            scrollen.setHbarPolicy(ScrollBarPolicy.NEVER);
            scrollen.setContent(vBoxLabel);
            
            
            
            //Scene aufteilung
            //hBox
            HBox haupt = new HBox();
            haupt.setSpacing(60);
            haupt.setAlignment(Pos.CENTER);
            haupt.getChildren().addAll(border,scrollen);
            root.setCenter(haupt);
            BorderPane.setAlignment(haupt, Pos.CENTER);
            BorderPane.setMargin(haupt, new Insets(10,10,10,10));
            
            
            
            
            
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.setMaximized(true);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void handle(ActionEvent event) {
        // TODO Auto-generated method stub
        
        if(event.getSource() == this.eis) {
            System.out.println("Label Eis");
            System.out.println(malaga2.getId());
            startseite.setVisible(true);
            imageView.getImage();
        }
            
            if(event.getSource() == this.startseite) {
                
                startseite.setVisible(false);
        
    }
}
}
 
Hi,

konnte mein Problem doch lösen. Habe mir den Wert anzeigen lassen, bei bewegen der ScrollBar und einfach den Wert wo das neue Bild anfängt dann bei Buttonklick setzen lassen.
Was wäre euer Lösungsweg?
Danke und Gruss

Aaron

Java:
scrollen.setVvalue(0.34);
 
Hi dzim,

vielen Dank für deine Antwort.
Ich werde es mal ausprobieren ob es klappt.
Eine Lösung das Label oder den ImageView direkt anzuwählen ohne den vValue-Wert einzugeben gibt es nicht?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben