Regarding issue with JavaFX 8 ScrollPane
Jonathan Giles
jonathan.giles at oracle.com
Mon Jul 28 01:20:08 UTC 2014
Sirish,
Try with 8u20 - I just did and it works as expected - the vertical
scrollbar is at the bottom-most position. This looks like it was a bug
fixed between 8u5 and 8u20.
-- Jonathan
On 28/07/2014 1:15 p.m., Mong Hang Vo wrote:
> Vadala,
>
> I don't have a good answer to your question. So I am adding the
> openjfx-dev at 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
>>
>
More information about the openjfx-dev
mailing list