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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как о4истить фрайм от g 
:(
    Опции темы
kostay
Дата 19.12.2007, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 16.5.2007

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



Код

public class ViewPort extends JFrame{ 
    private Unit unit;
    
    public ViewPort() {
        super("TestFrame");
        setSize(500, 400);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = getSize();
        setLocation((screenSize.width - frameSize.width) / 2,
                    (screenSize.height - frameSize.height) / 2);
        validate();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public void updateViewPort(){
        removeAll();
        repaint();
        validate();
    }
    
    public void addUnit(Unit unit){
        this.unit = unit;
    }

    
    public void paint(Graphics g){
        Graphics2D g2 = (Graphics2D) g;
        g2.drawOval(unit.getPositionX(), unit.getPositionY(), 10, 10); 
    }
}


в листенере вызывается updateViewPort(), он делает репаинт но старый unit остаётся прорисованным мне надо 4тобы всё о4ишалось и рисовался новый
PM MAIL   Вверх
garm
Дата 19.12.2007, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.3.2006

Репутация: нет
Всего: 2



А где происходит смена старого юнита на новый? То есть где вызывается addUnit()?

И просто совет - вместо этого:
Код

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
setLocation((screenSize.width - frameSize.width) / 2,
             (screenSize.height - frameSize.height) / 2);

можно писать:
Код

setLocationRelativeTo(null);

с тем же эффектом.
PM   Вверх
hamsterKSU
Дата 19.12.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 11



ну если ты сам все рисуешь то заливай Graphics сам. сделай ему fillRect каким надо цветом и все
PM MAIL ICQ   Вверх
kostay
Дата 19.12.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 16.5.2007

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



Цитата(garm @ 19.12.2007,  07:41)
А где происходит смена старого юнита на новый? То есть где вызывается addUnit()?

И просто совет - вместо этого:
Код

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
setLocation((screenSize.width - frameSize.width) / 2,
             (screenSize.height - frameSize.height) / 2);

можно писать:
Код

setLocationRelativeTo(null);

с тем же эффектом.

какраз так делать не стоит один раз у меня были проблемы с прорисовкой изза етого теперь дименсион юзаю

а смена юнита в томже листенере, потом перерисовку вызываю из него же.
ну ладно буду заливать область какимнить фоном как сказал хамстер

Это сообщение отредактировал(а) kostay - 19.12.2007, 13:16
PM MAIL   Вверх
garm
Дата 19.12.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 23.3.2006

Репутация: нет
Всего: 2



Цитата(kostay @  19.12.2007,  16:15 Найти цитируемый пост)
какраз так делать не стоит один раз у меня были проблемы с прорисовкой изза етого теперь дименсион юзаю

Вообще-то проблем с прорисовкой там быть не должно. Впрочем, может мне пока просто везло.
Цитата(kostay @  19.12.2007,  16:15 Найти цитируемый пост)
а смена юнита в томже листенере, потом перерисовку вызываю из него же.ну ладно буду заливать область какимнить фоном как сказал хамстер

Я почти не сомневаюсь, что такой метод будет работать, но он является не совсем идейно правильным, и может принести несколько неприятных проблем в будущем. Дело в том, что метод paint() отвечает не только за отображение самого компонента, но и за отрисовку рамки и содержащихся в нём компонентов.
В общем, рекомендуемым методом для переопределения является paintComponent(). А если в самом начале переоределённого метода вызвать super.paintComponent(), то - для JPanel - он самостоятельно зальёт себя цветом фона. Если, конечно, включена непрозрачность.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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