1

我有一个 JTextPane,我需要在其中插入一个 JComponent。我在用着

JTextPane.insertComponent(Component)

项目确实插入了,但是垂直定位太高了。不是让组件的底部与当前文本行的基线对齐,而是组件位于该位置之上,从而阻止/覆盖上方出现的文本行。

我尝试在插入的组件和 JTextPane 上使用各种值调用 setAlignmentY(float),但它根本不影响行为。

我的猜测:我的 JTextPane 或其 Document 中似乎有一些状态需要更改。但我不知道它是什么。

4

3 回答 3

0

我知道,这是一个很老的问题,但是您使用 setAlignmentY 的方法是完全正确的。不知道是什么代码导致它无法工作,但 JTextPane.insertComponent(Component) 的 javadoc 说明了以下关于对齐的内容:

组件根据 Component.getAlignmentY 返回的值相对于文本基线放置。对于 Swing 组件,可以使用 JComponent.setAlignmentY 方法方便地设置此值。例如,将值设置为 0.75 将导致 75% 的组件高于基线,25% 的组件低于基线

所以使用textPane.setAlignmentY(1.0f)有预期的效果。

于 2012-12-21T12:44:46.023 回答
0

setSize(width, height)在将 JComponent 插入 JTextPane 之前,您是否尝试过调用它?它应该适用于大多数组件。

于 2011-06-28T12:58:48.863 回答
-1

我遇到了同样的问题,找不到使用 JTextPane 或 JEditorPane 的解决方案。但我能够使用 JavaFX/WebView/WebEngine/JFXPanel。您将需要更新到 Java 8 (JDK 1.8)。我创建了自己的 HTMLPaneType 类,它是 JFXPanel 的扩展,并使用 HTMLPaneType 代替 JTextPane。

如果您想响应 href 点击,JTextPane 需要添加一个 HyperlinkListener。如果您不想响应 href 点击或以不同方式响应,HTMLPaneType 需要添加侦听器。就我而言,我想在单击 href 时启动外部浏览器。我可以使用 JTextPane 和扩展的 JFXPanel 来做到这一点。另见
http://blogs.kiyut.com/tonny/2013/07/30/javafx-webview-addhyperlinklistener/#.VK-JIHsueWN

于 2015-01-09T07:56:40.287 回答