Vadala,
I don't have a good answer to your question. So I am adding the
openjfx-dev@openjdk.java.net alias.
In the future, please send your question to this alias.
Thank you very much,
Mong
Vadala, Sirish wrote:
Hello Hang,
My name is Sirish Vadala, working for Legislative Data Center,
Sacramento, California. Right now I am working on a project
implemented on JavaFX 8 (jdk1.8.0_05) and have a quick question on one
of the UI related issues that my team is facing.
Coming to the issue I am not able to programmatically place the
ScrollPane's scroll position using setVValue(double) method of
ScrollPane. For example, if you look at the sample program below, the
vertical scroll bar position always remains on the top what so ever
the vValue is set to. Can you please let me know if this is an
existing issue being worked on or if I am doing something wrong in
implementation?
I highly appreciate your response at your convenience on this issue.
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javax.imageio.ImageIO;
public class JavaFXPixel extends Application {
private ImageView myImageView;
private ScrollPane scrollPane;
@Override
public void start(Stage primaryStage) {
Button btnLoad = new Button("Load");
btnLoad.setOnAction(btnLoadEventListener);
myImageView = new ImageView();
scrollPane = new ScrollPane();
scrollPane.setPrefSize(300, 250);
scrollPane.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
scrollPane.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
scrollPane.setContent(myImageView);
// STILL MY VERTICAL SCROLL POSITION IS ALWAYS PLACED ON THE TOP
scrollPane.setVvalue(1.0);
VBox rootBox = new VBox();
rootBox.getChildren().addAll(btnLoad, scrollPane);
Scene scene = new Scene(rootBox, 300, 300);
primaryStage.setTitle("My Test Program");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
private final EventHandler<ActionEvent> btnLoadEventListener =
(ActionEvent t) -> {
FileChooser fileChooser = new FileChooser();
//Set extension filter
FileChooser.ExtensionFilter extFilterJPG = new
FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG");
FileChooser.ExtensionFilter extFilterPNG = new
FileChooser.ExtensionFilter("PNG files (*.png)", "*.PNG");
fileChooser.getExtensionFilters().addAll(extFilterJPG,
extFilterPNG);
//Show open file dialog
File file = fileChooser.showOpenDialog(null);
try {
BufferedImage bufferedImage = ImageIO.read(file);
Image image = SwingFXUtils.toFXImage(bufferedImage, null);
myImageView.setImage(image);
scrollPane.setContent(null);
scrollPane.setContent(myImageView);
scrollPane.setVvalue(1.0);
} catch (IOException ex) {
Logger.getLogger(JavaFXPixel.class.getName()).log(Level.SEVERE, null, ex);
}
};
}
Thanks.
Sirish Vadala
916 341 8878