在bos开发中,将必输控件的背景色设置成特定的颜色,而不是自带的黄色,本以为用这下面样的代码就可以,竟然不好用!
txtTest.setBackground(
new
Color(
220
,
255
,
255
));//无效,
纳闷!不好用干嘛还公布这个方法,有点欺骗的感觉!
其实仔细看一下这些控件,它们都是复合控件,本质上是由多件控件组成的,呵呵,有意思!
常用控件:
// 文本框,类: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())
.setCustomBackgroundColor(new Color(220,255,255));
下拉列表框与它们不同,需要特殊处理
// 要先写一个内部类,其中实现了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());
lstText.setRenderer( new FontCellRenderer());