必填项的标签, 显示一个红色的星号"*"

想必每个数据对象都会有些必填项, 因此做了一个标签提示哪个是必填项.
这个也是重写UI的, 不过和M2那个Label一样, 因为Label是透明的, 应该可以应用于各种L&F.
 
import  java.awt.Color;
import
 java.awt.Graphics;
import
 javax.swing.JComponent;
import
 javax.swing.JLabel;
import
 javax.swing.plaf.ComponentUI;
import
 javax.swing.plaf.metal.MetalLabelUI;
import
 com.sun.java.swing.SwingUtilities2;
/**
 * Created at 2006-8-7 9:46:32<br>
 * 必填项标签
 *
 * 
@author Brad.Wu
 * 
@version
 1.0
 
*/

@SuppressWarnings(
"serial" )
public class RequiredLabel extends JLabel 
{
 
public RequiredLabel() 
{
 }

 
public RequiredLabel(String text) {
  
super("" +
 text);
 }

 
/**
  * (非 Javadoc)
  *
  * 
@see javax.swing.JLabel#setText(java.lang.String)
  
*/

 @Override
 
public void setText(String text) {
  
if (text.startsWith(""
))
   
super
.setText(text);
  
else

   
super.setText("" + text);
 }

 
/**
  * (非 Javadoc)
  *
  * 
@see javax.swing.JLabel#updateUI()
  
*/

 @Override
 
public void updateUI() {
  setUI(
new
 RequiredLabelUI());
 }

 
/**
  * Created at 2006-8-7 9:53:32<br>
  * 必填项标签UI
  *
  * 
@author Brad.Wu
  * 
@version
 1.0
  
*/

 
static class RequiredLabelUI extends MetalLabelUI {
  
protected static RequiredLabelUI labelUI = new
 RequiredLabelUI();
  
public static ComponentUI createUI(JComponent c) 
{
   
return
 labelUI;
  }

  
/**
   * (非 Javadoc)
   *
   * 
@see javax.swing.plaf.basic.BasicLabelUI#paintEnabledText(javax.swing.JLabel,
   *      java.awt.Graphics, java.lang.String, int, int)
   
*/

  @Override
  
protected void paintEnabledText(JLabel l, Graphics g, String s, int textX, int textY) {
   
int mnemIndex =
 l.getDisplayedMnemonicIndex();
   g.setColor(l.getForeground());
   
int x = l.getFontMetrics(l.getFont()).stringWidth("*"
);
   SwingUtilities2.drawStringUnderlineCharAt(l, g, s.substring(
1), mnemIndex, textX +
 x,
     textY);
   g.setColor(
new Color(255100100
));
   SwingUtilities2.drawString(l, g, 
"*", textX, textY + 2
);
  }

 }

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值