所以,我有这个JTexrtArea几乎完全满足我的需求.唯一不对的是线间距.我无法设置它. (为什么不使用JTextPane?因为在JTextArea中可以更改间距,而JTextArea比JTextPane更轻,我的程序中有很多这样的东西).
我之前问过这个question,这是我从用户StanislavL得到的答案:
要覆盖JTextArea的行间距,请查看PlainView(用于呈现PLainDocument).
public void paint(Graphics g,Shape a)方法中有以下几行
drawLine(line, g, x, y);
y += fontHeight;
因此,您可以调整渲染固定y偏移.
在BasicTextAreaUI方法中创建视图.将其替换为您自己的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;
}
我掌握了他告诉我要做的一般想法,但我不知道该怎么做.
此外,我不想覆盖默认的JTextArea“属性”,我想有一个选择 – 使用默认的或使用自定义的.
只有JTextArea代码中的更改才会来自
y = fontHeight,
至
y =(fontHeight(或 – )additionalSpacing).
我该如何实现这一目标?
我使用/复制哪些课程?
我把它放在哪里?
我如何使它们可用?
我如何让整个工作起作用?
如果您认为这太具体而无法使用,也许有人可以编写一个关于如何在现有的基础上100%创建自定义swing组件的一般教程.然后有人可以轻松地改变一些值,以更好地调整它的需要.