gpt4 book ai didi

java - iText 列表项或 JTextArea 中的行距

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:26 27 4
gpt4 key购买 nike

我需要在我的 GUI 中同步我的 PDF ListItem 和 JTextArea 的行间距。我可以通过调整一个或另一个来做到这一点。

这一切都很好,除非 ListItem(或 JTextArea)超过一行(JTextArea 中的换行设置为 true)。

我可以调整两个 ListItem 之间的高度。该距离还将应用于单个多行 ListItem 的两行之间的高度。

但是,在我的 GUI 中,由于 JTextArea 中的组件无聊和默认行间距,这两者并不相同。差异大约是一个像素,但在大范围内可能会累积并导致一些问题。

那么,有没有什么方法可以在 JTextArea 中设置行间距,或者有什么方法可以区分两个列表项和同一列表项的两行之间的间距?

我愿意使用任何类型的外部库以及它可能需要的任何类型的技巧...

最佳答案

要覆盖 JTextArea 的行间距,请查看 PlainView(用于呈现 PLainDocument)。

public void paint(Graphics g, Shape a) 方法中有以下几行

        drawLine(line, g, x, y);
y += fontHeight;

因此您可以调整渲染固定 y 偏移量。

BasicTextAreaUI 方法中创建 View 。将其替换为您自己的 PlainView

实现
public View create(Element elem) {
Document doc = elem.getDocument();
Object i18nFlag = doc.getProperty("i18n"/*AbstractDocument.I18NProperty*/);
if ((i18nFlag != null) && i18nFlag.equals(Boolean.TRUE)) {
// build a view that support bidi
return createI18N(elem);
} else {
JTextComponent c = getComponent();
if (c instanceof JTextArea) {
JTextArea area = (JTextArea) c;
View v;
if (area.getLineWrap()) {
v = new WrappedPlainView(elem, area.getWrapStyleWord());
} else {
v = new PlainView(elem);
}
return v;
}
}
return null;
}

关于java - iText 列表项或 JTextArea 中的行距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12725647/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com