0
내가 여기에서 가져온 BSimpleTable를 사용하여 사용자 정의의 ListField 구성 요소 추가 : http://javaandjava.blogspot.com/2010/02/simple-table-component-for-blackberry.html 불행하게도 구성 요소가 그 안에 필드에 대한 올바른 정렬을 지원하지 않습니다, 그래서 수정하여 추가하려 이 같은 코드 :사용자의 ListField 그릴하지 않습니다 제대로
public class BSimpleRowRenderer extends Manager{
private int[] colWidthPercents;
private int[] cellFrontPaddings;
private int preferredHeight;
public BSimpleRowRenderer(long style,Field[] rowContents,int preferredHeight,
int[] colWidthPercents,int[] cellFrontPaddings){
super(style);
for (int col = 0; col < rowContents.length; col++) {
add(rowContents[col]);
}
this.colWidthPercents = new int[rowContents.length];
for(int i=0;i<colWidthPercents.length;i++){
this.colWidthPercents[i] = colWidthPercents[i];
}
this.cellFrontPaddings = new int[rowContents.length];
for(int i=0;i<cellFrontPaddings.length;i++){
this.cellFrontPaddings[i] = cellFrontPaddings[i];
}
this.preferredHeight = preferredHeight;
}
protected void sublayout(int width, int height) {
int x=0;
int totalWidth = Display.getWidth();
for (int col = 0; col < getFieldCount(); col++) {
// Set the size and position of the current cell.
Field curCellField = getField(col);
XYPoint offset = calcAlignmentOffset(curCellField, Math.max(0,colWidthPercents[col]*totalWidth/100), Math.max(0, getPreferredHeight()));
layoutChild(curCellField, width-x,getPreferredHeight());
setPositionChild(curCellField, x+offset.x, 0);
x+=(int)Math.floor((colWidthPercents[col]*totalWidth)/100);
}
setExtent(Display.getWidth(), getPreferredHeight());
}
public void drawRow(Graphics g, int x, int y, int width, int height) {
layout(width, height);
setPosition(x, y);
g.pushRegion(getExtent());
subpaint(g);
g.popContext();
}
public int getPreferredWidth() {
return Display.getWidth();
}
public int getPreferredHeight() {
return preferredHeight;
}
private XYPoint calcAlignmentOffset(Field field, int width, int height)
{
XYPoint offset = new XYPoint(0, 0);
long fieldStyle = field.getStyle();
long field_x_style = fieldStyle & Field.FIELD_HALIGN_MASK;
if (field_x_style == Field.FIELD_RIGHT){
offset.x = width - field.getExtent().width;
}
else if (field_x_style == Field.FIELD_HCENTER){
offset.x = (width - field.getExtent().width)/2;
}
long field_y_style = fieldStyle & Field.FIELD_VALIGN_MASK;
if (field_y_style == Field.FIELD_BOTTOM){
offset.y = height - field.getExtent().height;
}
else if (field_y_style == Field.FIELD_VCENTER){
offset.y = (height - field.getExtent().height)/2;
}
return offset;
}
}
문제는 올바른 정렬은 강조되고 강조 행 또는 행 내부의 필드에 노력하고있다. 위의 코드에서 내가 잘못했거나 누락 된 곳이 어디인지 궁금합니다. 나는 어떤 수정이든 내가 성취하고자하는 것을 반영하지 못해서 필사적이다.
답장을 보내 주셔서 감사합니다.하지만 구성 요소를 변경하는 것이 내가 원하는 마지막 작업이며 올바른 구성 지원이 부족하다는 점을 제외하고는 현재 구성 요소가 충분합니다. 어쨌든 고마워, . –