- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 JPanel 扩展,该扩展仅用于将其内容渲染到 BufferedImage,然后将其用作在 OpenGL 中渲染的纹理。为此,我使用布局管理器等创建了特殊的 JPanel 扩展,就像构建普通的 Swing GUI 一样。
为了将其渲染为图像,我确保首先调用 doLayout
,然后使用 printAll(java.awt.Graphics)
方法来打印它以及添加的组件:
Graphics2D g = image.createGraphics();
printAll(g);
Swing 本身(EDT、RepaintManager 等)从不涉及,我只是创建组件(在任何窗口或框架之外)并直接使用 printAll。
这对于大多数“原子”组件(例如按钮、标签、列表)来说工作得非常好,但是我遇到了 JScrollPane 的问题。无论我尝试什么,JScrollPane 永远不会将其视口(viewport)(主视口(viewport)和滚动条)绘制到给定的 Graphics,而只会绘制其边框,甚至在视口(viewport)上手动调用 printAll
也不会产生任何结果。 p>
我附上了两个屏幕截图,显示了由 JList 和 JButton 组成的简单 GUI 的“之前和之后”。在第一个图像中,我使用原始 JList,在第二个图像中,我使用 new JScrollPane(list)
将其包装到 JScrollPane 中。
我未能在 JScrollPane 代码中找到与绘制视口(viewport)相关的任何魔法。也许 Swing 需要初始化一些东西,但我忘了。有什么方法可以让这些视口(viewport)显示出来吗?
最佳答案
参见Why does the JTable header not appear in the image?有关将组件渲染到图像的一些一般提示。尝试调用该线程代码中提到的 validate()
、addNotify()
和 doLayout()
的组合。
关于java - JScrollPane 和 printAll(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9553513/
我正在开发一个 JPanel 扩展,该扩展仅用于将其内容渲染到 BufferedImage,然后将其用作在 OpenGL 中渲染的纹理。为此,我使用布局管理器等创建了特殊的 JPanel 扩展,就像构
我是 Java 新手,到目前为止,我对它还不太了解。这是我的一项作业,我在使用两种方法时遇到了问题。谁能帮我解决这个问题。谢谢 另外我在哪里可以学习何时在方法中使用什么?我看过一些 youtube,这
这是一项我未能完成的家庭作业。我已经很接近了,但我无法理解如何完成。任何帮助是极大的赞赏。 实现一个 Arrayplus1() 类,它接受一个整数数组数据和一个 int x 作为其大小。在类 Arra
我有一个带有 GLCanvas 的 JFrame。当我调用 JFrame 的 Component.printAll() 方法然后将 Graphics2D 对象打印到 png 文件(使用 Buffere
我是一名优秀的程序员,十分优秀!