Почему нулевой макет и абсолютные позиции являются плохой практикой в ​​Java Swing?

У меня есть код с нулевой панелью:

JPanel thePanel = new JPanel();
    thePanel.setLayout(null);

и я использовал setBounds(x, y, width, heigth), например здесь:

label2.setBounds(150, 220, 459, 311);

Я читал, что это не очень хорошая практика, можете ли вы сказать мне, почему? Только потому, что когда вы хотите добавить что-то между одним компонентом и другим, вам нужно снова и снова устанавливать их позиции или это что-то еще?

Буду очень благодарен за ответ, спасибо!;)

1 ответ

Есть несколько проблем с абсолютным позиционированием:

  • При разных размерах и разрешениях экрана то, что отлично смотрится на вашем компьютере, будет выглядеть иначе на другом экране с другим разрешением.
  • В том же духе, что происходит, когда пользователь изменяет размер экрана, потому что он хочет запустить ваше приложение рядом с другим приложением (для копирования, вставки или чего-то еще)
  • Различные локали и размеры шрифтов, что происходит с вашими метками, когда вы используете другую локаль, другой шрифт или меняете размер шрифта.

Возможно, есть и другие причины, но использование диспетчера макетов гарантирует, что содержимое перераспределяется при изменении размеров окон или при изменении содержимого контейнера...

Использование абсолютного позиционирования, пожалуй, самый простой способ в начале, но стоит узнать о различных менеджерах компоновки и о том, как они работают. Это избавит вас от многих головных болей, например, из-за изменения требований.

Другие вопросы по тегам