【问题标题】:How to take a whole (Image) Snapshot of JFXtras Agendatable / ControlsFX Spreadsheet Javafx 8如何获取 JFXtras Agendatable / ControlsFX 电子表格 Javafx 8 的完整(图像)快照
【发布时间】:2015-01-26 09:07:03
【问题描述】:

在我们的项目中,我们已经使用了类节点的 snapshot() 来获取 Javafx 8 表的“屏幕截图”。 snapshot() 函数总是对整个节点/场景进行截图。它确实适用于普通桌子, 但由于我们使用的是 JFXtras 议程表和 ControlsFX 电子表格, 快照功能只是用滚动窗格截取当前显示的表格,而表格的其余部分则被剪掉。

如何获取这些表的“完整”快照?

【问题讨论】:

  • 我是否理解正确,本质上您想从屏幕截图中删除滚动窗格的视口?像不存在一样截取屏幕截图?
  • 滚动窗格并没有给我带来太多困扰,只是表格被切到了用户的当前视图。这就是为什么只有 1/4 的表格出现在图像上..
  • 我已经与 JavaFX 中的表格控件的作者进行了交谈,他指出滚动窗格中的表格不太可能不会切断到可见单元格。所以你的问题是议程和电子表格默认在他们的视图中使用滚动窗格。这样,只有在滚动窗格可以增长以显示所有单元格时,才能完全截取此类控件。
  • 您能否提供一个滚动窗格中的 JavaFX 表格示例,该表格仍然在屏幕截图上显示其全部内容?
  • 谢谢!我们已经猜测内置的 Scrollpane 是问题所在。有没有办法我们可以删除滚动窗格中的构建?通常我们只是为 javafxTables 手动环绕滚动窗格。有没有办法可以更改电子表格/议程以获取完整内容的屏幕截图?

标签: java javafx javafx-8 jfxtras controlsfx


【解决方案1】:

屏幕截图正是它所暗示的:截取的图像与显示的屏幕完全相同。如果节点(无论是矩形、表格、议程还是电子表格)在屏幕上仅部分可见,则屏幕截图将仅捕获可见的内容。

任何其他行为都会导致有趣的行为:假设通过仅显示 10 行的滚动窗格显示具有 10.000.000 行的表格。屏幕截图会突然增加 1.000.000 倍。 如果在该滚动窗格旁边或下方显示其他节点,它们会去哪里?随着滚动窗格的增长,它们会向下移动吗?创建该屏幕截图需要一个完整的新布局,并在截取表格时实际填充这 10.000.000 行。

如果您想截取滚动窗格内的更多节点,则需要增加滚动窗格的大小。将其与 Excel 进行比较:创建 PC 屏幕的屏幕截图仅包含工作表中可见的部分。如果你想要整个工作表,你需要打印它。所以我怀疑你正在寻找一种打印议程/电子表格的方法。但这不是你要问的问题。

【讨论】:

  • 我们的主要目标是将电子表格/Agendatable 添加到 PDF。这就是我想要截图的原因。您有什么建议可以在不拍摄快照的情况下将表格添加到 PDF 中吗?
  • 我已经和 JavaFX 的人讨论过这个问题,似乎必须实现一个专用的 print(PrintJob) 方法,类似于 WebView 的方法。然后,您可以打印到 PDF 或图像并将其包含在文档中。这时候你需要截屏,如果你想要议程的全部内容,你需要在一个分辨率足够高的屏幕上截屏,这样滚动窗格就不会隐藏任何东西。在我的 2560x1600 上这是可能的。
  • 本着 JavaFX webengine 的精神,我在 Agenda (8.0-r4-snapshot) 中添加了一个实验性的打印方法。不确定输出是否是我希望的。在 JavaFX 中打印,啊,不令人印象深刻,或者我做得不对。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 2017-05-14
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多