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