JTextPane插入组件,错误的垂直对齐

时间:2011-06-28 12:52:39

标签: java vertical-alignment jtextpane

我有一个JTextPane,我需要插入一个JComponent。我正在使用

JTextPane.insertComponent(Component)

项目确实已插入,但垂直定位太高。组件的底部与当前文本行的基线对齐,而不是使组件的底部与该位置的基线对齐,而是阻挡/覆盖上面出现的文本行。

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  

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

因此使用textPane.setAlignmentY(1.0f)会产生预期效果。

答案 2 :(得分:-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