Ситуация совсем запуталась...
Я перерисовываю компоненты так ->
| Код |
public class JRoundedButtonUI extends BasicButtonUI implements MouseListener, KeyListener, FocusListener { protected static JRoundedButtonUI buttonUI; protected JButton myButton; private Shape shape = null; private boolean pressed = false; private boolean mouseOver = false; private String text; private int startX = 1; private int startY = 1; private int myWidht = 0; private int myHeight = 0; private static GradientPaint pressedGradient; private static GradientPaint unPressedGradient; int i = 0; @Override public void installUI(JComponent c) { myButton = (JButton) c; buttonUI = new JRoundedButtonUI(); myButton.addMouseListener(this); myButton.addFocusListener(this); myButton.addKeyListener(this); myButton.setFocusable(true); super.installUI(myButton); // если вызываю супер метода, то с размерами всё супер, но под моей кнопкой рисуется дефолтный бордер.... // если супер не вызывать, нельзя установить размеры кнопки :( // как я пытаюсь обойти проблему?
Dimension size = myButton.getSize(); Dimension prefSize = myButton.getPreferredSize(); // получаю ВСЕ необходимые размеры кнопки myButton.setBorder( BorderFactory.createEmptyBorder() ); // убираю бордер //myButton.setBorder( null ); // или так убираю myButton.setSize( size ); myButton.setPreferredSize( prefSize ); myButton.setMinimumSize( prefSize ); // возвращаю на место параметры... Однако на некоторых лоок ен филах ето глючит, и компонент отрисовывается меньше(!!!!!) чем //установленный MinimumSize (!!!)
} @Override public void uninstallUI(JComponent c) { super.uninstallUI(c); } public static ComponentUI createUI(JComponent c) { return new JRoundedButtonUI(); } @Override public void paint(Graphics g, JComponent c) {
// ла ла ла }
|
потом после становки LookAndFeel ->
| Код |
Object[] defaults = { "ButtonUI", "myPackage.JRoundedButtonUI" };
UIManager.getDefaults().putDefaults(defaults);
|
В такой ета перерисовка работает на ура со всеми леиаут менеджерами кроме Бокса... :(
Проблема известно где... Она описана в комантариях класса отрисовки.
|