插件开发工具库,推荐依赖该工具库。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

52 lines
1.3 KiB

package com.fanruan.api.design.work.form.basic;
import com.fr.design.designer.properties.Encoder;
import com.fr.design.mainframe.widget.renderer.GenericCellRenderer;
import java.awt.*;
/**
* @author Kalven
* @version 10.0
* Created by Kalven on 2019/9/4
* 控件属性值的渲染器,可以把一个复杂的对象渲染成文本或者其他一些可读的形式
*/
public class EncoderCellRenderer extends GenericCellRenderer {
private static final int LEFT = 1;
protected Encoder encoder;
protected Object value;
public EncoderCellRenderer(Encoder encoder) {
this.encoder = encoder;
}
@Override
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
g.setColor(getBackground());
g.fillRect(0, 0, width, height);
g.setColor(getForeground());
FontMetrics fm = g.getFontMetrics();
int y = ((height - fm.getHeight()) / 2) + fm.getAscent();
String txt = getValueText();
if (txt != null) {
g.drawString(txt, LEFT, y);
}
if (getBorder() != null) {
getBorder().paintBorder(this, g, 0, 0, width, height);
}
}
@Override
public void setValue(Object value) {
this.value = value;
}
private String getValueText() {
return encoder.encode(value);
}
}