Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JCOmponent rendering problem 
:(
    Опции темы
PashaOvechkin
Дата 27.5.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Привет! Занимаюсь перерисовкой многих свинг компонентов.
Столкнулся с проблемой.

Непример есть JButton, внешность которого которого мануально переопределена.

Вывожу его всевозможные размеры, получаю : 

Код


myButton.getText() = = =  0  myButton.getSize() = = = java.awt.Dimension[width=42,height=14] myButton.getMinimumSize() = = = java.awt.Dimension[width=40,height=22] myButton.getPreferredSize()  = = = java.awt.Dimension[width=44,height=22]



А реально етот компонент рисуется маленйкий - его высота 14 пихелей всего.
При чём практически всегда всё перерисовывается хорошо, но в нескольких местах имеет место такая вот проблема...

Вопрос : почему LayOut выделяет на компонент менйше места чем указанный minimumSize ?!
LayOut простенький...
PM MAIL Skype   Вверх
w1nd
Дата 28.5.2008, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 23
Всего: 54



Цитата(PashaOvechkin @  27.5.2008,  11:21 Найти цитируемый пост)
Вопрос : почему LayOut выделяет на компонент менйше места чем указанный minimumSize ?!

LayoutManager не обязан учитывать предустановленные размеры компонента. Вы какой используете?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
PashaOvechkin
Дата 28.5.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Ситуация совсем запуталась...


Я перерисовываю компоненты так -> 
Код



 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);


В такой ета перерисовка работает на ура со всеми леиаут менеджерами кроме Бокса... :( 

Проблема известно где... Она описана в комантариях класса отрисовки.

PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0733 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.