Linux Suse 12.3、JDK 1.7.0-45、JavaFX 2.2 を使用しています。
私の質問は: なぜ次のコードが機能しないのか、toggleShow/hide 機能を実装する方法は?
ここに私のテストコードがあります:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;
public class Test extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(final Stage stage) {
AnchorPane root = new AnchorPane();
BorderPane inner = new BorderPane();
AnchorPane.setTopAnchor(inner, 0.0);
AnchorPane.setRightAnchor(inner, 0.0);
AnchorPane.setBottomAnchor(inner, 0.0);
AnchorPane.setLeftAnchor(inner, 0.0);
final HTMLEditor center = new HTMLEditor();
final ToolBar top = new ToolBar();
final Button button = new Button("hide");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
top.setVisible(false);
//center.setPrefSize(Double.MAX_VALUE, Double.MAX_VALUE);
}
});
center.setManaged(false);
top.getItems().add(button);
//top.managedProperty().bind(top.visibleProperty());
top.setManaged(false);
inner.setTop(top);
inner.setCenter(center);
root.getChildren().add(inner);
Scene scene = new Scene(root,600,400);
stage.setScene(scene);
stage.show();
}
}
私が欲しいのは、この質問に対するセルゲイのソリューションと同じ効果ですが、幅/高さを変更することはありません!:
2 つの異なるペインに属するコントロール同士の重なりを解決する方法
私が言ったように、それは単なるテストコードです。別のレイアウトを BorderPane として使用しようとしましたが、まだ機能しません。サイズを手動で再計算したくない...など。ノードを削除して再度追加することは、私にとっては選択肢ではありません。
私のコードで何が問題になっていますか? どんなアイデアでも大歓迎です!ありがとう