[Resize] मौजूदा आकार को फिट करने के लिए JavaFX स्क्रॉलपैन सामग्री का आकार बदलना


Answers

XML या CSS माध्यम से fitToHeight या fitToWidth विशेषता को सेट करना:

FXML:

<ScrollPane fx:id="myScrollPane" fitToHeight="true" fitToWidth="true" />

सीएसएस:

.my-scroll-pane {
    -fx-fit-to-height: true;
    -fx-fit-to-width: true;
}
Question

मेरे पास एक BorderPane साथ केंद्र तत्व के रूप में एक BorderPane यह स्क्रीन को भरने के लिए स्वचालित रूप से आकार बदलता है। ScrollPane अंदर एक HBox है जिसमें कोई सामग्री नहीं है लेकिन एक ड्रैग एंड ड्रॉप लक्ष्य है। इसलिए मैं चाहता हूं कि इसे अपनी अभिभावक ScrollPane भरें।

ऐसा करने का पसंदीदा तरीका क्या है?

मैंने जो भी कोशिश की है, वह अब तक ScrollPane.resize(...) रीसाइज़ ScrollPane.resize(...) को HBox आकार में बदलने के लिए विधि को HBox लेकिन यह जटिल और अपरंपरागत लगता है।

संपादित करें: इस पर कुछ उपयोगी कोड जोड़ने के लिए, इस तरह से मैं समस्या का समाधान कर सकता हूं, लेकिन मेरा मानना ​​है कि ऐसा करने का कुछ बेहतर तरीका होना चाहिए:

@Override
public void resize(double width, double height) {
    super.resize(width, height);

    double scrollBarHeight = 2;
    double scrollBarWidth = 2;

    for (final Node node : lookupAll(".scroll-bar")) {
        if (node instanceof ScrollBar) {
            ScrollBar sb = (ScrollBar) node;
            if (sb.getOrientation() == Orientation.HORIZONTAL) {
                System.out.println("horizontal scrollbar visible = " + sb.isVisible());
                System.out.println("width = " + sb.getWidth());
                System.out.println("height = " + sb.getHeight());
                if(sb.isVisible()){
                    scrollBarHeight = sb.getHeight();
                }
            }
            if (sb.getOrientation() == Orientation.VERTICAL) {
                System.out.println("vertical scrollbar visible = " + sb.isVisible());
                System.out.println("width = " + sb.getWidth());
                System.out.println("height = " + sb.getHeight());
                if(sb.isVisible()){
                    scrollBarWidth = sb.getWidth();
                }
            }
        }
    }

    hBox.setPrefSize(width-scrollBarWidth, height-scrollBarHeight);
}

आंशिक रूप से यहां से लिया गया कोड: स्क्रॉलपैन के स्क्रॉलबार्स तक कैसे पहुंचें