irof Advent Calendar のネタを作っていたときに見つけた現象。
環境:Windows7(64bit)、Java1.7.0_10
StackPaneの子として、CanvasとGridPaneをaddAllする。(GridPaneが手前)
GridPaneにボタン、ラベル、テキストフィールドをadd。Canvasには市松模様を描いておく。
@Override
public void start(Stage stage) {
GridPane grid = new GridPane();
grid.add(new Button("Button1"), 0, 0);
grid.add(new Button("Button2"), 1, 0);
grid.add(new Label("Label1"), 0, 1);
grid.add(new Label("Label2"), 1, 1);
grid.add(new TextField(), 0, 2);
grid.add(new TextField("text"), 1, 2);
Canvas canvas = new Canvas(240, 80);
GraphicsContext context = canvas.getGraphicsContext2D();
context.setFill(Color.LIGHTBLUE);
for(int y = 0; y < 8; y++){
for(int x = 0; x < 24; x++){
if((x + y) % 2 == 0){
context.fillRect(x * 10, y * 10, 10, 10);
}
}
}
StackPane stack = new StackPane();
stack.getChildren().addAll(canvas, grid);
stage.setScene(new Scene(stack));
stage.show();
}
表示すると、こんな感じになってしまう。

一つ目のボタンだけ手前に見えて、あとは市松模様の後ろに隠れてしまう。
しかし、ウィンドウサイズを変更すると、全部手前に見えるようになる。

しかし、ボタンにマウスカーソルを合わせたり、テキストフィールドを入力状態にすると、他のコントロールがまた隠れてしまう。



コメント