Regarding issue with JavaFX 8 ScrollPane

Jerome Cambon jerome.cambon at oracle.com
Mon Jul 28 07:34:59 UTC 2014


Note that there is also an issue related to this, that is only fixed in 
the current Fx repo: RT-37961 
<https://javafx-jira.kenai.com/browse/RT-37961>
Depending on your scene graph, the 8u20 fix mentioned by Jonathan 
(RT-35554 <https://javafx-jira.kenai.com/browse/RT-35554>) can be 
enough, or not.

Jerome

On 7/28/14, 3:20 AM, Jonathan Giles wrote:
> 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