html里面账号获取怎么写,如何在包含HTML的JLabel中获取省略号?

当我将

HTML标记组合到JLabel文本中时,我忽略了当空间太小而无法显示完整文本时显示的省略号行为.在我的特定情况下,它是一个TableCellRenderer,它扩展了JLabel(swing的默认值或其他).现在,当列宽太小而文本无法完全显示时,它不会显示省略号.

请参见下图,例如:

对于左栏,我使用HTML将文本包装在渲染器中:setText(“< html>”“< strong>”value.toString()“< / strong>”“< / html>”);.正如您所看到的,当列宽太小而无法包含文本时,它只是被剪切.但是,右列显示日期和时间并使用DefaultTableCellRenderer在无法包含完整文本时显示省略号.

所以我的问题是,我可以同时拥有两个吗?意思是,用HTML包装文本仍然得到省略号?

更新:

我发现在使用HTML时没有得到省略号的原因.我按照JComponent#paintComponent(Graphics g)中的代码一直到BasicLabelUI#layoutCL(…).请参阅从上一个中获取的以下代码段.如果它没有html属性,它只剪裁字符串(当标签文本用html包装时为true).但我不知道如何解决它:

v = (c != null) ? (View) c.getClientProperty("html") : null;

if (v != null) {

textR.width = Math.min(availTextWidth,(int) v.getPreferredSpan(View.X_AXIS));

textR.height = (int) v.getPreferredSpan(View.Y_AXIS);

} else {

textR.width = SwingUtilities2.stringWidth(c,fm,text);

lsb = SwingUtilities2.getLeftSideBearing(c,text);

if (lsb < 0) {

// If lsb is negative,add it to the width and later

// adjust the x location. This gives more space than is

// actually needed.

// This is done like this for two reasons:

// 1. If we set the width to the actual bounds all

// callers would have to account for negative lsb

// (pref size calculations ONLY look at width of

// textR)

// 2. You can do a drawString at the returned location

// and the text won't be clipped.

textR.width -= lsb;

}

if (textR.width > availTextWidth) {

text = SwingUtilities2.clipString(c,text,availTextWidth);

textR.width = SwingUtilities2.stringWidth(c,text);

}

textR.height = fm.getHeight();

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值