質問
親コンポーネントに合うようにスクロールパンのサイズを変更したいです。このコードをテストしました:
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);
}
}
.
しかしあなたが見ることができるように、木のスクロールバーは見えません。私のコードに問題がありますか?
解決
スクロールバーは表示されません
-
ScrollBarPolicy.AS_NEEDED
に設定されているポリシーがあります。
- スクロールバーの幅と高さは、その「コンテナ」の幅と高さに自動的にサイズ変更されます。この場合は、サイズ変更可能なVBOXです。
これを修正するには、setFitToHeight
とsetFitToWidth
を削除してfalseとしてそれらを残すことができます。
ScrollBarPolicy
とは対照的にALWAYS
をAS_NEEDED
に設定することもできます。これは、ウィンドウが拡張されていてもスクロールバーを保持します。
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);
}
}
.所属していません StackOverflow