- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个奇怪的问题/错误,第一次单击时 TitledPane 不会展开,它需要多次单击才能展开。除此之外,嵌套的 TitledPanes 根本不会展开,除非您多次单击它们并在选项卡之间切换。
所以代码可以工作,但不正常。
如果专家可以判断这是一个错误还是我做错了什么,那将是一个很大的帮助。谢谢!
package subtables;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Accordion;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Subtables extends Application
{
@Override
public void start(Stage primaryStage)
{
Accordion accordion = new Accordion();
TitledPane pane = new TitledPane();
VBox root = new VBox();
HBox titles = new HBox();
titles.setPadding(new Insets(5, 5, 5, 24));
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
FlowPane graphic = new FlowPane();
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
pane.setGraphic(graphic);
pane.setOnMouseClicked((e) ->
{
TabPane tabPane = new TabPane();
Tab tab1 = new Tab("Sub Table 1", getSubWindow());
Tab tab2 = new Tab("Sub Table 2", new Label("Text inside a tab."));
Tab tab3 = new Tab("Sub Table 3", new Label("Text inside a tab."));
Tab tab4 = new Tab("Sub Table 4", new Label("Text inside a tab."));
tabPane.getTabs().add(tab1);
tabPane.getTabs().add(tab2);
tabPane.getTabs().add(tab3);
tabPane.getTabs().add(tab4);
VBox vBox = new VBox(tabPane);
pane.setContent(vBox);
});
accordion.getPanes().add(pane);
root.getChildren().add(titles);
root.getChildren().add(accordion);
primaryStage.setTitle("Hello World!");
Scene scene = new Scene(root, 640, 480);
primaryStage.setScene(scene);
primaryStage.show();
}
public TextField getTextField()
{
TextField textField = new TextField();
textField.setPromptText("Value");
textField.setPrefWidth(50);
return textField;
}
public VBox getSubWindow()
{
Accordion accordion = new Accordion();
TitledPane pane = new TitledPane();
VBox root = new VBox();
HBox titles = new HBox();
titles.setPadding(new Insets(5, 5, 5, 24));
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
titles.getChildren().add(getTextField());
FlowPane graphic = new FlowPane();
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
graphic.getChildren().add(getTextField());
pane.setGraphic(graphic);
pane.setOnMouseClicked((e) ->
{
TabPane tabPane = new TabPane();
Tab tab1 = new Tab("Sub Table 1", getSubWindow());
Tab tab2 = new Tab("Sub Table 2", new Label("Text inside a tab."));
Tab tab3 = new Tab("Sub Table 3", new Label("Text inside a tab."));
Tab tab4 = new Tab("Sub Table 4", new Label("Text inside a tab."));
tabPane.getTabs().add(tab1);
tabPane.getTabs().add(tab2);
tabPane.getTabs().add(tab3);
tabPane.getTabs().add(tab4);
VBox vBox = new VBox(tabPane);
pane.setContent(vBox);
});
accordion.getPanes().add(pane);
root.getChildren().add(titles);
root.getChildren().add(accordion);
return root;
}
/**
* Main function to launch the application.
*/
public static void main(String[] args)
{
launch(args);
}
}
最佳答案
setConent()
方法被调用 onMouseClicked。首先单击 TitledPane 标题将其展开,然后处理鼠标单击。鼠标点击的核心功能是设置内容。它还没有渲染。第二次单击折叠 TitledPane。第三次单击将展开 TitledPane,其中的内容现在可见。将创建 VBox 选项卡移出 setOnMouseClicked()
方法。
正确的代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Accordion;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TitledPane;
import javafx.stage.Stage;
public class TitledPaneApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
TabPane subTabPane = new TabPane(new Tab("Sub tab1", new Label("Sub content1")), new Tab("Sub tab2", new Label("Sub content2")));
TitledPane subTitledPane = new TitledPane("Sub titled pane", subTabPane);
Accordion subAccordion = new Accordion(subTitledPane);
Tab tab1 = new Tab("Tab1", subAccordion);
Tab tab2 = new Tab("Tab2", new Label("Content2"));
TabPane tabPane = new TabPane(tab1, tab2);
TitledPane titledPane = new TitledPane("Titled pane", tabPane);
Accordion accordion = new Accordion(titledPane);
Scene scene = new Scene(accordion, 400, 400);
stage.setScene(scene);
stage.show();
}
}
关于JavaFX TitledPane 需要多次单击才能展开,场景不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60134856/
有没有办法将 TitledPane 标题的大小设置为 GridPane 的大小? 这是 TitledPane 的代码 // --- GridPane container fin
关于 JavaFX: How to change the focus traversal policy? Alexander Kirov 展示了如何为 JavaFX 应用程序自定义焦点遍历策略。它工作
是否可以在 TitledPane 的标签上添加 JavaFX.Button? 已找到解决方案!来源:javawiki.sowas.com/doku.php?id=javafx:titledpane-w
我正在使用 TitledPanes ScrollPanes 和 TableViews,并且我遇到了问题,当我折叠 titledPane 时,水平 TableView 的 >ScrollBar 重置。
我有一个 TitledPane ,里面有 ListView ,当我折叠 titledPane 并展开它后,列表不再可见,但它仍然在某处。如果我调整 titledPane 的大小(通过调整应用程序窗口的
我需要在运行时根据一些传入值更改 TitledPane 标题背景,否则重置它。 我所有的 TitledPane 都在附加到场景的 CSS 上设置了样式。 换个背景没问题。问题是当鼠标在背景更改后进入标
我有两个不同的组件:TableView 和表格旁边的 TitledPane。我想做的是重新调整表格 View 的尺寸,但仅在标题 Pane 展开或折叠时进行。当 titledpane 折叠时,表格 V
我想知道,如何在展开和折叠 TitledPane 时调整 Scene 的大小。 我试过只有 1 个 TitledPane 1 个标题 Pane package fxinswing; import ja
有没有办法设置 titledpane 的动画速度?我什么也没找到。事实上有两个问题。第一的:展开的动画比内容本身的展开更快。您会看到圆圈的速度比第二个标题 Pane 中的条向下移动的速度稍慢。 第二:
我遇到了一个奇怪的问题/错误,第一次单击时 TitledPane 不会展开,它需要多次单击才能展开。除此之外,嵌套的 TitledPanes 根本不会展开,除非您多次单击它们并在选项卡之间切换。 所以
我有一个 View ,其中 SplitPane 中有两个垂直方向的 TitledPane。我希望当我折叠其中一个时,将另一个的大小调整为场景的高度。这是我的 .fxml 文件的代码:
是否可以完全删除 TitledPane 的标题? 我设法使用 css 文件中的以下代码使其不可见: .titled-pane > .title{ -fx-background-color: r
有没有办法在 javafx 中设置 TitledPane 之间的边距? 我创建了多个带标题的 Pane 并将它们放在一个 VBox 中。我希望它在每个带标题的 Pane 之间有一个间隙。 我查了set
我已经设法使用 setGraphic 在 TitledPane 中放置一个按钮,但我希望它位于右侧;这是代码: @Override public void start(Stage primaryS
我正在尝试将自定义工具栏添加到通用 TitledPane 中。我的代码似乎可以工作(下面是最小的示例),但我在布局方面遇到问题。具体来说:我使用 setGraphic() 添加工具栏,但它似乎具有固定
有人知道如何在 JavaFX 中以编程方式折叠 TitledPane 吗?我知道 setExpanded 和 setCollapsible 方法可用,但它仅启用该属性。我想在没有任何鼠标交互的情况下折
所以,这是我现在拥有的代码: SplitPane sp = new SplitPane(); final StackPane sp1 = new StackPane(); fi
我目前有一行添加到 JFrame 的 JPanel。我需要这些面板能够展开和折叠,以尽量减少 JFrame 上的困惑。 现在,我只是创建 JPanel,然后将它们添加到 JFrame。 public
我有这个代码: public void start(Stage primaryStage){ TitledPane titledPane = new TitledPane("TITLE", n
我想在 TitledPane 的标题中添加一个小图标。因此,我设置了一个空标题并添加了一个包含 Label 和 ImageView 的 HBox 作为图形。通过这种方式,图标显示在靠近文本末尾的位置。
我是一名优秀的程序员,十分优秀!