Центрирование компонента в строке, содержащей другой компонент, с помощью MigLayout

Есть ли простой способ центрировать кнопку в строке с индикатором загрузки с левой стороны кнопки, не перемещая саму кнопку?

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

Это решение кажется слишком сложным и на самом деле не подходит для того, чем я хочу заниматься.

На данный момент у меня есть следующее:

setLayout(new MigLayout("align center center"));

add(_loadingIndicator, "center, split 2");
add(_applyButton, "center");

но это центрирует 2 компонента вместе, так что кнопка никогда не будет по центру.


person dguay    schedule 25.08.2017    source источник


Ответы (1)


Чтобы кнопка располагалась точно по центру, в макете должно быть 3 столбца. Вы разместите кнопку в центре, а индикатор загрузки - в правом. Допустим, индикатор загрузки 32х32 пикселя.

setLayout(new MigLayout("debug", "[grow]32px[]0[grow]")); // The [][][]s are columns, meaning 3 columns. The numbers between them are the insets.

add(_applyButton, "cell 1 0"); // Place the button in 2nd column, 1st row.
add(_loadingIndicator, "cell 2 0"); // Place the indicator in 3rd column, 1st row.

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

person Bill Tsagkas    schedule 07.09.2017