Java Layout Manager - PullRequest
       10

Java Layout Manager

2 голосов
/ 16 ноября 2010

Каковы преимущества использования существующего менеджера компоновки по сравнению с написанием слушателя, который обрабатывает функции изменения размера? Например, мне нужно было расположить кнопки в сетке и центрировать сетку:

int h = component.getHeight() / 11;
int w = component.getWidth() / 9;
int offsetX = w;
int offsetY = h;
int x = (2 * column) * w - offsetX;
int y = (2 * row) * h - offsetY;

setBounds(x, y, w, h);

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

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

Ответы [ 3 ]

6 голосов
/ 16 ноября 2010

Ваш код в основном имитирует GridLayout.

setLayout(new GridLayout(11, 9));
// add all the components
...
// Profit

Для центрирования:

JPanel outerPanel = new JPanel(new BorderLayout());
JPanel gridPanel = new JPanel(new GridLayout());
outerPanel.add(gridPanel, BorderLayout.CENTER);
1 голос
/ 16 ноября 2010

Cool.Теперь попробуйте написать одинаковые 128 раз (для каждого элемента управления на каждом экране).И это не конец игры.Теперь попробуйте изменить графический дизайн вашего приложения, то есть снова переписать этот код 128 раз.Наслаждайтесь!

1 голос
/ 16 ноября 2010

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

...