Почему нулевой макет и абсолютные позиции являются плохой практикой в Java Swing?
У меня есть код с нулевой панелью:
JPanel thePanel = new JPanel();
thePanel.setLayout(null);
и я использовал setBounds(x, y, width, heigth), например здесь:
label2.setBounds(150, 220, 459, 311);
Я читал, что это не очень хорошая практика, можете ли вы сказать мне, почему? Только потому, что когда вы хотите добавить что-то между одним компонентом и другим, вам нужно снова и снова устанавливать их позиции или это что-то еще?
Буду очень благодарен за ответ, спасибо!;)
1 ответ
Есть несколько проблем с абсолютным позиционированием:
- При разных размерах и разрешениях экрана то, что отлично смотрится на вашем компьютере, будет выглядеть иначе на другом экране с другим разрешением.
- В том же духе, что происходит, когда пользователь изменяет размер экрана, потому что он хочет запустить ваше приложение рядом с другим приложением (для копирования, вставки или чего-то еще)
- Различные локали и размеры шрифтов, что происходит с вашими метками, когда вы используете другую локаль, другой шрифт или меняете размер шрифта.
Возможно, есть и другие причины, но использование диспетчера макетов гарантирует, что содержимое перераспределяется при изменении размеров окон или при изменении содержимого контейнера...
Использование абсолютного позиционирования, пожалуй, самый простой способ в начале, но стоит узнать о различных менеджерах компоновки и о том, как они работают. Это избавит вас от многих головных болей, например, из-за изменения требований.