forked from fanruan/finekit
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.
53 lines
1.3 KiB
53 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 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); |
|
|
|
int x = LEFT; |
|
g.setColor(getForeground()); |
|
|
|
FontMetrics fm = g.getFontMetrics(); |
|
int y = ((height - fm.getHeight()) / 2) + fm.getAscent(); |
|
String txt = getValueText(); |
|
if (txt != null) { |
|
g.drawString(txt, x, 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); |
|
} |
|
} |