- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:我有需要使用 JavaFX 舞台显示的 Swing 内容。 Swing 内容需要包装在 ScrollPane
中,以便在调整舞台大小时保持正常的 Swing 大小。
预期行为:首次显示舞台时,需要自动调整其大小以适应 Swing 内容(即无需滚动即可查看)。
实际行为:要么舞台部分显示 Swing 内容(如果舞台在 节点被填充之前显示),要么根本不显示(如果舞台是在节点被填充后显示)。
如果在添加 Swing 节点内容之前显示阶段:
如果在添加 Swing 节点内容后 显示舞台,然后调整大小:
代码: 这可能包括一些冗余语句,作为我各种尝试的一部分。
public static void main(final String[] args) {
Platform.startup(() -> {});
Platform.runLater(() -> doSwingNodeTest());
}
protected static void doSwingNodeTest() {
final Stage stage = new Stage();
final ScrollPane root = new ScrollPane();
final Scene scene = new Scene(root);
final SwingNode node = new SwingNode();
stage.setScene(scene);
stage.show(); // Required here for any content to
//display without resizing.
stage.sizeToScene();
final JPanel j = new JPanel();
j.setLayout(new BorderLayout());
j.add(new JLabel("Some text"), BorderLayout.NORTH);
j.add(new JButton("Some button"), BorderLayout.CENTER);
j.add(new JButton("East button"), BorderLayout.EAST);
node.setContent(j);
j.revalidate();
node.autosize();
root.setContent(node);
stage.setOnShown(e -> {
j.doLayout();
stage.sizeToScene();
node.autosize();
root.autosize();
});
// stage.show(); // Causes an 0-sized window.
}
有人知道发生了什么以及如何解决这个问题吗?谢谢!
最佳答案
ScrollPane
,加上SwingNode
,控制起来会比较麻烦。这就是可能发生的事情:
ScrollPane
是根节点,所以Scene
需要告诉ScrollPane
它可以给多少空间滚动面板
。Scene
告诉 ScrollPane
它可以使用任意数量的空间(Scene
将尝试在初始布局期间自行调整大小)。 ScrollPane
需要告诉其子级进行布局。由于 ScrollPane
可以在需要时产生滚动条,它只会告诉 children 使用它想要的空间。SwingNode
,在布局阶段没有内容渲染,它会告诉ScrollPane
它需要使用X空间,这是某种默认。ScrollPane
将自身调整为该大小。ScrollPane
告诉 Scene
它需要那么多空间。Scene
和 Stage
相应地设置它们的大小。Stage
变得可见,所有内容开始呈现。SwingNode
开始渲染 Swing 组件。SwingNode
请求。SwingNode
从 ScrollPane
请求空间。ScrollPane
创建滚动条并继续在小空间中呈现其子项。至于解决方案,我没有找到任何像样的解决方案。一种方法是在某处设置固定大小(Scrollpane
、Scene
或 SwingNode
)。另一种方法是将滚动移动到 Swing 中。
关于使用 SwingNodes 时 JavaFX 舞台大小不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49166342/
如图所示,上面的红色框是一个 GridBox,下面是一个带有 Splitpane (ListView) 和 Gridpane (2 Buttons) 的 VBox。我想要实现的是在单击按钮“隐藏>>"
使用 msfconsole 并搜索 linux x64 有效负载。 我遇到过舞台 Actor 、舞台和单曲?它们都有“reverse_tcp”,可以将连接反转回攻击者。然而我尝试查找舞台 Actor
我正在寻找一种将 3 个 LineCharts 放入单个窗口的方法。我的意思是我想让它们并排放置,或者一个在另一个下面。 我一直在寻找实现它的方法,但找不到任何东西。我试图搜索如何将多个场景放入一个阶
我有一个有效的 Web 功能,它使用 html5 视频和 Canvas 来访问设备相机的媒体流,然后拍照并在 Canvas 中渲染图像。效果很好,但我想使用 konvajs stage 而不是 can
我在解决这个问题时遇到了困难,并且我找不到我遇到的这个问题的正确答案。我希望将一个场景/阶段用作打开另一个场景/阶段的按钮,并且两者都通过相同的方法调用。完整的方法如下: public void c
我在 JavaFX 上有一个简单的应用程序,它实际上由几个 Pane 和按钮组成。我不知道如何在舞台调整大小时移动按钮。所以,我希望左下角的按钮即使在调整窗口大小时也始终可见。 这里是节点概览: 这里
来自 Swing 并且是 JavaFX 的新手,我尝试对 Java FX Stages 和 Scenes 进行子类化。但是我很快就遇到了问题,比如初始化过程中找不到我的子类场景的 init 方法。 所
How to animate or move window using clutter_actor_animate? Here's my code and it didn't work. clutte
有没有办法从关联的类 Controller 中获取 FXML 加载文件的 Stage/Window 对象? 特别是,我有一个模态窗口 Controller ,我需要舞台来关闭它。 最佳答案 我找不到解
我将工作代码分为 2 个文件以避免困惑。以前确实有效,但是将所有场景都放在一个类中是非常不愉快的。 以前,当您单击 Sprite 时,它会将您从菜单带到游戏。然后我将游戏组和游戏场景的代码提取到游戏类
我希望能够将 HTML 文本转换为位图,以便在 AlivePDF 中使用。我的测试适用于 TextArea,或者组件是否在舞台上或可见。但我希望能够处理不一定位于屏幕上的文本块。有谁知道如何做到这一点
我有一个 swing 应用程序,我需要在其中运行并打开 JavaFX 场景/阶段。我必须在没有扩展应用程序的情况下运行它。我已经尝试了 Stackoverflow 上发布的大多数解决方案,但没有一个适
我正在寻找一种方法来缩小 Flash 文件的高度。我可以更改宽度,但高度似乎与其所在窗口的大小有关? http://www.bevelite.com.au/test 我正在使用 page-flip.c
我需要在选择组合框元素时重新绘制窗口。如何在 JAVA FX 2.2 中重绘窗口(舞台)? 下面是我的代码 functionComboBox.valueProperty().addListener(n
我是一名优秀的程序员,十分优秀!