Вертикальное выравнивание значков разного размера в JRadioButtonMenuItem

Я столкнулся с проблемой выравнивания значков разных размеров с помощью JRadioButtonMenuItem. Вот фото моей проблемы. Значки имеют несколько размеров и выровнены по левому краю.

Значки имеют несколько размеров и выровнены по левому краю

Я хотел бы центрировать значки, как на картинке ниже.

введите здесь описание изображения

Судя по всему, ни один из методов класса JRadioButtonMenuItem не позволяет это сделать...


person paranoia25    schedule 03.09.2012    source источник


Ответы (2)


В качестве альтернативы реализуйте интерфейс Icon, используя постоянный объемный размер, и масштабируйте отображаемое содержимое, чтобы отразить желаемый размер изображения, как показано в этом пример. Для удобства вы можете отображать глифы Unicode произвольного размера, как показано здесь.

изображение

person trashgod    schedule 03.09.2012

Подсчитайте, сколько пробелов нужно добавить до и после значка шириной самого широкого значка, и поместите каждый значок с помощью метода setIconTextGap() таким образом, чтобы:

[(widestIconWidth-iconWidth)/2_ofWhiteSpace][icon][(widestIconWidth-iconWidth)/2_ofWhiteSpace]
person lebryant    schedule 03.09.2012
comment
Хорошо, но как установить положение значка? Я не вижу никакого метода класса JRadioButton, который позволяет это сделать? (На самом деле я использую класс JRadioButtonMenuItem) - person paranoia25; 03.09.2012
comment
Потому что нет метода. Просто создайте простой метод самостоятельно, чтобы рассчитать, сколько пробелов нужно добавить до и после значка. Затем используйте метод iconTextGap - person lebryant; 03.09.2012
comment
На самом деле решение не работает. Все элементы немного смещены. Кажется, расположение радиокнопки сложнее. - person paranoia25; 04.09.2012
comment
Да, теперь я вижу, это делает разрыв между значком и текстом ТОЛЬКО, зная, что у радиокнопки есть и то, и другое. Альтернатива, показанная выше, действительно работает. Также есть и другой способ - создайте значки (например, в Photohsop) так, чтобы все они имели одинаковую ширину, интересующую графику центрировали, а фон был установлен на 100% непрозрачный. - person lebryant; 04.09.2012