java swing自定义组件_java – 从现有的创建自定义swing组件

所以,我有这个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组件的一般教程.然后有人可以轻松地改变一些值,以更好地调整它的需要.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值