Как ограничить ширину SeparatorField фиксированным значением? - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть VerticalFieldManager, который содержит два обычных поля, разделенных SeparatorField. Второе поле намного больше первого, поэтому VFM прокручивает вверх / вниз и вправо / влево.

Когда я не добавляю SeparatorField, прокрутка на VFM работает должным образом - я никогда не смогу прокрутить (ни вертикально, ни горизонтально) мимо содержимого второго поля.

Однако, когда я добавляю SeparatorField (с конструктором по умолчанию), он, кажется, делает разделитель бесконечно широким - я могу прокручиваться бесконечно далеко вправо, намного дальше содержимого второго поля, и я, кажется, никогда не достигну конец разделителя.

Как я могу указать SeparatorField быть настолько широким, насколько это необходимо в соответствии с содержимым второго поля? Я попытался переопределить getPreferredWidth() для SeparatorField, но, похоже, это не имеет никакого эффекта.

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Я сам этого не делал, но подозреваю, что это должен делать переопределенный макет (int, int).
что-то вроде:

public static int MAX_WIDTH=20;
protected void layout(int maxWidth, int maxHeight) {
    super.layout(maxWidth, maxHeight);
    this.setExtent(Math.min(this.getWidth(), MAX_WIDTH), this.getHeight());
}
0 голосов
/ 14 апреля 2011

Что ж, мое решение этой проблемы состояло в том, чтобы полностью выбросить SeparatorField и нарисовать линию, куда он должен идти, в методе paint().

...