2009-10-19 3 views
1

Я использую borderLayout, чтобы расположить мои компоненты в JFrame и Box (BoxLayout.X_AXIS), чтобы поместить кнопки рядом друг с другом. Но это создает две проблемы:Изменить текст кнопки без изменения размера кнопки

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

  2. Я хочу, чтобы кнопки, чтобы иметь немного пространства между ними (скажем, 10 точек)

возможно ли это с помощью BorderLayout, или мне нужно использовать setLayout обнулить? И если так, разве это не испортит первоначальное размещение кнопок в кадре? Или это все еще будет рассмотрено Коробкой, которая помещается в borderLayout?

ответ

4

Несколько предложений

  1. Попробуйте установить preferredSize к подходящему Dimension значение
  2. Если это не сработает, попробуйте также установка maximumSize и minimumSize к этому же значению измерения
  3. Если все еще не работает, измените диспетчер компоновки кнопок на GridBagLayout. Преимущество этого менеджера макетов состоит в том, что он позволяет вам контролировать поведение макета в мельчайших подробностях. Недостатком является то, что вам обычно нужно настроить большое количество свойств на GridBagLayout, чтобы получить желаемое поведение. Я бы посоветовал сначала проверить учебник GridBagLayout, так как это довольно сложный зверь.
+0

Спасибо, установив минимальный/максимальный размер кнопок. Теперь я просматриваю GridBagLayout. – FinalArt2005

+0

Настройка предпочтительного размера зависит только от высоты, а не от ширины. – FinalArt2005

2

Если вы хотите, чтобы они имели одинаковый размер, просто добавьте кнопки в GridLayout, и они будут автоматически отсортированы по размеру до самой большой текстовой строки. Вы также можете указать промежуток между компонентами.

+0

Спасибо, я посмотрел GridBagLayout, но я думаю, что это слишком сложно для пары кнопок, которые у меня есть, поэтому я попробую этот GridLayout (уже наткнулся на него, читая о GridBagLayout). Если я смогу установить разрыв, это будет здорово. – FinalArt2005