質問

親コンポーネントに合うようにスクロールパンのサイズを変更したいです。このコードをテストしました:

import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class MainApp extends Application {

    @Override
    public void start(Stage stage) throws Exception {

        BorderPane bp = new BorderPane();
        bp.setPrefSize(600, 600);
        bp.setMaxSize(600, 600);
        bp.setStyle("-fx-background-color: #2f4f4f;");

        VBox vb = new VBox(bp);

        ScrollPane scrollPane = new ScrollPane(vb);
        scrollPane.setFitToHeight(true);
        scrollPane.setFitToWidth(true);

        scrollPane.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
        scrollPane.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);

        Scene scene = new Scene(scrollPane);

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
.

しかしあなたが見ることができるように、木のスクロールバーは見えません。私のコードに問題がありますか?

ENTER IMENTDESCRUショニング

役に立ちましたか?

解決

スクロールバーは表示されません

  1. ScrollBarPolicy.AS_NEEDED
  2. に設定されているポリシーがあります。
  3. スクロールバーの幅と高さは、その「コンテナ」の幅と高さに自動的にサイズ変更されます。この場合は、サイズ変更可能なVBOXです。
  4. これを修正するには、setFitToHeightsetFitToWidthを削除してfalseとしてそれらを残すことができます。

    ScrollBarPolicyとは対照的にALWAYSAS_NEEDEDに設定することもできます。これは、ウィンドウが拡張されていてもスクロールバーを保持します。

    ScrollPane

    を使って詳細はこちら

    ScrollPane API:SetFitoHeight

        public class MainApp extends Application {
    
            @Override
            public void start(Stage stage) throws Exception {
    
                BorderPane bp = new BorderPane();
                bp.setPrefSize(600, 600);
                bp.setMaxSize(600, 600);
                bp.setStyle("-fx-background-color: #2f4f4f;");
    
                VBox vb = new VBox(bp);
    
                ScrollPane scrollPane = new ScrollPane(vb);
                //scrollPane.setFitToHeight(true);
                //scrollPane.setFitToWidth(true);
    
                scrollPane.setHbarPolicy(ScrollBarPolicy.ALWAYS);
                scrollPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);
    
                Scene scene = new Scene(scrollPane);
    
                stage.setScene(scene);
                stage.show();
            }
    
            public static void main(String[] args) {
                launch(args);
            }
        }
    
    .

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top