Как предотвратить выход MigLayout за пределы контейнера - PullRequest
5 голосов
/ 08 сентября 2010

Я пытаюсь создать простую панель состояния, используя MigLayout, следующим образом:

setLayout(new MigLayout("fillx", "[][p]")); // removing constructor args makes no difference
add(createStatusLabel(), "span 2, wrap");
add(createProgressBar(), "growx, pushx");
add(createCancelButton(), "");

Это прекрасно работает, если сообщение о состоянии, отображаемое с помощью метки состояния, достаточно короткое, чтобы соответствовать размеру текущей панели (кнопка отмены остается выровненной по правому краю, а индикатор выполнения изменяется, чтобы занять оставшееся пространство). Если сообщение о состоянии слишком длинное, оно не обрезается и приводит к тому, что область выходит за границы контейнера, что приводит к удалению кнопки отмены с экрана.

Любые предложения о том, как этого избежать?

Спасибо

1 Ответ

8 голосов
/ 10 сентября 2010

Попробуйте установить максимальную ширину этикетки на 100%.

Вы можете сделать это, изменив компоновку метки на "span 2, wrap, wmax 100%"

В своих тестах я обнаружил, что он все еще выглядит не совсем правильно, поэтому вы можете вычесть немного длины (что-то вроде wmax 100% - 10px), чтобы отвести его от края.

...