Соответствующий getPreferredSize()
, унаследованный от BasicMenuItemUI
, должен "соответствовать внешнему виду и ощущениям". Каждый L & F использует украшения разного размера. Если вы этого не делаете, вы должны вернуть null
и указать «менеджер компоновки компонента».
Естественно, sscce поможет.
Добавление:
текст JMenu больше не центрирован.
Я не думаю, что это когда-либо было в центре, но вы можете переместить textRect
, если хотите.
class CustomMenuUI extends BasicMenuUI {
public static ComponentUI createUI(JComponent c) {
return new CustomMenuUI();
}
@Override
protected void paintText(Graphics g, JMenuItem menuItem,
Rectangle textRect, String text) {
g.setColor(Color.red);
int w2 = menuItem.getBounds().width / 2;
textRect.translate(w2 - textRect.width / 2, 0);
super.paintText(g, menuItem, textRect, text);
}
@Override
public Dimension getPreferredSize(JComponent c) {
return new Dimension(80, 32);
}
}