Как ограничить ширину разделительного поля фиксированным значением?

#blackberry #field

#ежевика #поле

Вопрос:

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

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

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

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

Ответ №1:

Я сам этого не делал, но подозреваю, что переопределение layout(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());
}
  

Комментарии:

1. Похоже, это не имеет никакого эффекта — разделитель по-прежнему бесконечно широк.

Ответ №2:

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