произвольная позиция ребенка (детей) в диспетчере по координатам - PullRequest
2 голосов
/ 01 января 2012

Как разместить поля в диспетчере по координатам в пользовательских местах без использования 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(??, ??);
        }

       }

Большое спасибо!

1 Ответ

6 голосов
/ 01 января 2012

Попробуйте что-то вроде этого:

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;
    }
...