我有一个javafx应用程序,可以在滚动窗格中显示内容。此内容包括一个选项卡窗格。在选项卡窗格中,有一个VBox,其中包含可以根据用户交互更改高度的小部件,尤其是:
发生这种情况时,应用程序不会按预期调整大小。我知道问题是tabpane无法展开以匹配其展开的内容。
但是,如果我调整应用程序窗口的大小,或者只是选择另一个选项卡,然后回到原始选项卡,布局将正确更新。
因此,我认为缺少的只是“触发”一些重新布局。但是,当调整选项卡内容的大小时,我无法通过触发requestLayout来管理它。我尝试强制使用tabpane minHeight和maxHeight,然后调整选项卡内容的大小,但不起作用。
下面是一个显示问题的示例程序(这是JavaFX8,但我相信这个问题从那时起就没有得到解决)
import javafx.application.Application;
import javafx.beans.property.ReadOnlyDoubleProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.stage.Stage;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.SingleSelectionModel;
import javafx.scene.layout.VBox;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TitledPane;
import javafx.scene.control.TabPane;
import javafx.scene.control.Tab;
public class TitledPaneBench extends Application {
@Override
public void start(Stage stage) throws Exception {
ScrollPane pane = new ScrollPane();
VBox box = new VBox();
box.getChildren().add(new Label("Test"));
box.getChildren().add(new Label("Test2"));
box.getChildren().add(new Label("Test3"));
VBox cbox = new VBox();
cbox.getChildren().add(new Label("Test ABC"));
cbox.getChildren().add(new Label("Test CDE"));
cbox.getChildren().add(new Label("Test DEF"));
cbox.getChildren().add(new Label("Test EFG"));
TitledPane titledpane = new TitledPane("Test collapsible",cbox);
titledpane.setExpanded(false);
box.getChildren().add(titledpane);
box.getChildren().add(new Label("Test4"));
TabPane tabpane = new TabPane();
Tab tab1 = new Tab();
tab1.setText("First tab");
tab1.setContent(box);
Tab tab2 = new Tab();
tab2.setText("Faire Valoir");
tab2.setContent(new Label("Choucroute"));
tabpane.getTabs().add(tab1);
tabpane.getTabs().add(tab2);
box.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> arg0, Number arg1, Number arg2) {
System.err.println("Height changed "+arg1+" <- "+arg2);
SingleSelectionModel<Tab> selectionmodel = tabpane.getSelectionModel();
box.requestLayout();
tabpane.requestLayout();
}
});
pane.setContent(tabpane);
stage.setScene(new Scene(pane));
stage.show();
}
public static void main(String args[]) {
TitledPaneBench tb = new TitledPaneBench();
tb.launch(args);
}
}
看看这个,我移动了一些东西来清理它,让自己更容易阅读和理解你要找的那行是标题窗格。setOnMouseClicked(事件-
public class Main extends Application {
@Override
public void start(Stage stage) {
VBox cbox = new VBox();
cbox.getChildren().addAll(
new Label("Test ABC"),
new Label("Test CDE"),
new Label("Test DEF"),
new Label("Test EFG")
);
TabPane tabpane = new TabPane();
TitledPane titledpane = new TitledPane("Test collapsible",cbox);
titledpane.setExpanded(false);
//The line below should solve the issue
titledpane.setOnMouseClicked(event -> tabpane.requestLayout());
VBox box = new VBox();
box.getChildren().addAll(
new Label("Test"),
new Label("Test2"),
new Label("Test3"),
titledpane,
new Label("Test4")
);
tabpane.getTabs().addAll(
new Tab("First tab",box),
new Tab("Faire Valoir",new Label("Choucroute"))
);
box.heightProperty().addListener((arg0, arg1, arg2) -> {
System.err.println("Height changed "+arg1+" <- "+arg2);
SingleSelectionModel<Tab> selectionmodel = tabpane.getSelectionModel();//Unused
});
ScrollPane scrollPane = new ScrollPane(tabpane);
stage.setScene(new Scene(scrollPane));
stage.show();
}
}
我已经开始为绘制温度数据编程这个应用程序,当屏幕调整大小时,画布也应该调整大小。它初始化正确,但当我想调整窗口大小时,draw()方法只会根据它绑定的stackpanes高度值调整高度大小,但它将完全忽略宽度。听者甚至不会开火。这我觉得很奇怪。此外,我必须为StackPane设置最小大小,否则将不会绘制任何东西。我没有使用FXML。 编辑我将第58行从setRight()更改为setCenter,
问题内容: 我在一个网格中嵌套了两个网格。不幸的是,右边的嵌套网格设置行的高度,以使左边和右边的网格都具有相同的高度,额外的空间在class的div之间共享。如何设置右侧嵌套网格的行以调整内容的大小,使其与左侧嵌套行的高度相同? 问题答案: 您可以尝试 参考 您也可以只使用或
我在滚动窗格中放置了一个VBox。VBox会在标题窗格进入时填充它们。但是,一旦TitledPanes填满了分配给Vbox的空间,这些TitledPanes就开始重叠。理想情况下,我希望Vbox调整自身大小,并使用ScrollPane导航。 我将Vbox最大高度设置为。我已经在滚动窗格中添加了一个监听器来监听VBox大小的变化,但没有成功。有什么建议吗?
调整内存布局 上一节中我们看到,编译出的程序默认被放到了从 0x11000 开始的位置上: 运行输出 start address: 0x0000000000011000 ... Program Header: PHDR off 0x0000000000000040 vaddr 0x0000000000010040 ... LOAD off 0x0000000000000
我正在为我的项目使用 iTextPDF 免费标记。基本上,我使用免费标记加载并填充一个HTML模板,然后使用iTextPDF的将其呈现为PDF。 模板是: 这是我的代码: 这段代码运行良好,但是固定高度是一个问题。 即假设: 生成的文档是: 相反,如果我用 生成的文档是: 如你所见,在最后一份文件中,我有两页。我希望只有一个页面,它根据内容的高度改变其高度。 iText有可能实现这样的事情吗?
我有一个包含多个的布局,底部有一个按钮。当键盘显示时,我希望我的布局保持在键盘上方。我搜索这个问题,发现应该在清单的标签中放入