控件背景色

在bos开发中,将必输控件的背景色设置成特定的颜色,而不是自带的黄色,本以为用这下面样的代码就可以,竟然不好用!
txtTest.setBackground(new Color(220,255,255));//无效,
纳闷!不好用干嘛还公布这个方法,有点欺骗的感觉! 
其实仔细看一下这些控件,它们都是复合控件,本质上是由多件控件组成的,呵呵,有意思!
常用控件:
Java代码  
// 文本框,类:com.kingdee.bos.ctrl.swing.KDFormattedTextField  
txtTest.setCustomBackgroundColor(new Color(220,255,255));  
  
// F7控件,类:com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox  
((KDTextField)prmTest.getEditor()).setCustomBackgroundColor(new Color(220,255,255));  
  
// 日期控件,类:com.kingdee.bos.ctrl.swing.KDDatePicker  
((BasicFormattedTextField)pkTest.getEditor().getEditorComponent())<br>           .setCustomBackgroundColor(new Color(220,255,255));<br>  
下拉列表框与它们不同,需要特殊处理
Java代码  
// 要先写一个内部类,其中实现了ListCellRenderer接口。  
class FontCellRenderer extends JPanel implements ListCellRenderer  
{  
   private String text;  
   private Color background;  
   private Color foreground;  
  
   // 实现ListCellRenderer接口,须要实现此方法,以得取得要渲染的组件  
   public Component getListCellRendererComponent(JList list, Object value, int index,boolean isSelected, boolean cellHasFocus)  
   {  
      text = value.toString();  
      background = new Color(220,255,255);  
      foreground = Color.BLACK;  
      return this;  
   }  
  
   // 重写绘制方法,  
   public void paintComponent(Graphics g)  
   {  
      g.setColor(background);  
  
      // 设置背景色  
      g.fillRect(0, 0, getWidth(), getHeight());   
      g.setColor(foreground);  
  
      //在制定位置绘制文本  
      g.drawString(text, 5, 15);  
   }  
  
   // 设置绘制Cell的大小  
   public Dimension getPreferredSize()  
   {  
      return new Dimension(30, 20);    
   }  
}  
   
    在设置下拉列表框时如下,就好啦
    // 下拉列表框,类:com.kingdee.bos.ctrl.swing.KDComboBox
    lstText.setRenderer(new FontCellRenderer());

猜你喜欢

转载自sanyecao2314.iteye.com/blog/1894655