我试图弄清楚如何最大化组
中的节点的宽度和高度。我想要打包到组
中的主要原因是,我想要包含一个TranslateTransition
从我的TreeView
到ListView
并返回的TranslateTransition
。要做到这一点,我需要一个虚拟节点,它将被来回移动,并且该节点必须具有绝对定位。
根据这个SO问题,例如,我需要使用一个组
,我试图在下面的MWE中实现这个组。
import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.SplitPane;
import javafx.scene.control.ToolBar;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import static javafx.collections.FXCollections.observableArrayList;
public class MWE extends Application {
public static void main(String[] args) {
launch(MWE.class);
}
public void start(Stage primaryStage) throws Exception {
final VBox top = new VBox(new MenuBar(new Menu("File")), new ToolBar(new Button("button1")));
final ToolBar bottom = new ToolBar(new Label("status"));
final SplitPane main = new SplitPane(new SplitPane(createSplitPaneWithTreeView()), new VBox());
//main.setPrefSize(1920,1080);
final Group center = new Group(main);
main.setDividerPositions(0.40, 0.60);
BorderPane borderPane = new BorderPane(center, top, new Label(), bottom, null);
show(primaryStage, borderPane);
}
private SplitPane createSplitPaneWithTreeView() {
final TreeItem<String> root = new TreeItem<>("Foo");
root.getChildren().addAll(new TreeItem<>("Item 1"), new TreeItem<>("Item 2"));
final TreeView<String> treeView = new TreeView<>(root);
SplitPane splitPane = new SplitPane(treeView, new ListView<>(observableArrayList("List item 1", "List item 2")));
splitPane.setOrientation(Orientation.VERTICAL);
return splitPane;
}
private void show(Stage primaryStage, Parent parent) {
primaryStage.setScene(new Scene(parent, 1920, 1080));
primaryStage.show();
}
}
我想基本上避免通过硬编码设置main
的首选大小。我知道将splitpane的WidthProperty/HeightProperty绑定到根也是可能的,但是有没有其他优雅的解决方案呢?
如果您真的想使用一个组,则无法设置或绑定主SplitPane的PrefWidth/Height。组将自己的大小调整为其内容的prefSize。但是,我不明白为什么你会发现将主画面与场景的宽度和高度绑定在一起是不优雅的,就像这样:
primaryStage.setScene(new Scene(borderPane, 1920, 1080));
main.prefHeightProperty().bind(primaryStage.getScene().heightProperty());
main.prefWidthProperty().bind(primaryStage.getScene().widthProperty());
primaryStage.show();
它也会随着你的窗口调整大小,它是你想要的行为,但不是方式,为什么?
我有问题填充我的整个自定义HBox与一个网格窗格,是动态创建的。HBox存在于ListView中,并且已经随ListView动态缩放,没有任何问题。问题是,我希望我的GridPane中的一些东西在用鼠标扩展窗口大小时可以缩放,但有些部分需要保持相同的大小。 有两个按钮和一个填充标签需要保持相同的大小,这不是一个问题。我的模拟类总结了我正在做的事情: 控制器: FXML文档: 填充第一列中的标签,该
我有一个用SceneBuilder生成的TableView,所有列都是从其他视图导入的FXML,直到没有问题为止,但列没有填充宽度。 我试图用scene builder和FXML来解决这个问题,但没有运气,所有的大小都是计算出来的。 我尝试用一个change listener对其进行编码,它在每次窗口改变大小以适应列的大小时都会进行检查。 这样可以工作,并且列的大小调整到适当的宽度(基本上我得到了
我肯定这很简单,但我很难理解。 我有两个div。标题div最大宽度为500px。主分区最大宽度为400px。主div应在浏览器窗口中水平居中。标题div的左边缘需要与主div的左边缘对齐。请参见下文。红线是浏览器窗口的中心: 为此,我添加了一个最大宽度为500px(粉红色)的包装div,并在左侧使用了额外的填充。这在一定程度上有效。但在较小的屏幕尺寸下,左侧的额外填充会使布局偏离中心。 那么我如何
显然,有两个方法和 是这样的: 我看了这篇文章,但它推荐了一种已弃用的方法: 如何在爪哇fx中获取标签
我有一个问题,我假设将是一个相对简单的CSS布局。 我想要。。。 底部的页脚(固定高度) 左侧的导航条(固定宽度) 右侧的外部内容窗格(动态大小) 在内容窗格中。。。 顶部的缎带(固定高度) 内部内容div(动态大小) 我正在尝试使用flexbox来实现这一点,因为它似乎是目前最好的选择(网格太不稳定,并且没有得到很好的支持)。 问题是,我的内部内容div(实际上)在外部内容div中有好几层。这意
问题内容: +--------------------+ | | | | | | | | | 1 | | | | | | | | | +--------------------+ | | | | | | | | | 2 | | | | | | | | | +--------------------+ 如上所示的(1)的内容是未知的,因为它在动态生成的页面中可能会增加或减少。如上所示,第二个div(