如何在不使用HorizontalFieldManager或VerticalFieldManager的情况下,通过自定义位置的坐标在管理器中放置字段,而不使用setMargin():
__________________________________
|manager T T |
| | y1 | |
| | | |
| V | |
| x1 -------------- |y2 |
| <---> | field 1 | | |
| |______________| | |
| | |
| V |
| x2 ------------ |
| <----------> | field 2 | |
| |____________| |
| |
| |
__________________________________
我可以使用与此类似的代码:
public static class MyCustomManager extends Manager {
public MyCustomManager () {
super();
}
public void paint(Graphics g) {/**my painting*/super.paint(g);}
protected void sublayout(int width, int height) {
super.sublayout(PLOT, AUKST);
setPositionChild(??,??) //Something like this?
setPosition(??, ??); // or this? how?
setExtent(??, ??);
}
}
非常感谢!
答案 0 :(得分:6)
尝试这样的事情:
public Manager getCustomManager() {
Manager myCustomManager = new Manager(Manager.NO_HORIZONTAL_SCROLL|Manager.NO_HORIZONTAL_SCROLLBAR|Manager.NO_VERTICAL_SCROLL|Manager.NO_VERTICAL_SCROLLBAR ) {
protected void sublayout(int width, int height) {
//Suppose we have to place two fields in our Manager
if (getFieldCount() == 2) {
int
/** width and height values for the two fields */
w1, h1 , w2, h2 ,
/** position values for the two fields */
x1=5, y1=5, x2=10, y2=20;
// Get the first field added to the manager
Field f1 = getField(0);
h1 = f1.getHeight();
w1 = f1.getWidth();
// set the available width and height for the first field
layoutChild(f1, w1, h1);
// Set the position of the first field in the manager
setPositionChild(f1, x1, y1);
// Get the second field added to the manager
Field f2 = getField(1);
h2 = f2.getHeight();
w2 = f2.getWidth();
// set the available width and height for the second field
layoutChild(f2, w2, h2);
// Set the position of the second field in the manager
setPositionChild(f2, x2, y2);
setExtent(width, height);
} else {
setExtent(0, 0);
// or you can do something else in this case...
}
};
};
return myCustomManager;
}