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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объясните пож. как работает метод paint 
:(
    Опции темы
sidiakin
Дата 23.1.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

import java.awt.*;
import java.awt.event.*;

class MyCanvas extends Canvas{
    public MyCanvas(){super();}
    
    public void paint(Graphics g){
        g.drawRect(30, 30, 50, 50);
    }
}

class Program extends Frame{
    
    Program(String s){
        super(s);
        add(new MyCanvas());
        
        setSize(400, 400);
        setVisible(true);
    }
    
    public static void main(String[] args){
        Frame f = new Program("Test");
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent ev){
                System.exit(0);
            }
        });
    }
}


Знаю, что многие задавали подобный вопрос, но все таки...

Вот я создал Frame и вставил туда свой Canvas и он работает. А если я во Frame вставлю Panel, то ничего не работает. Т.е. я так понимаю, что все работает, только все затирается. Объясните, как работает метод Paint. Пытался использовать getGraphics, но тоже не получилось, или ошибка или так же ничего не выводилось. И не очень понятно зачем мне Canvas, если я могу просто создать Panel и в ней рисовать. Зачем мне создавать Frame, в нем Panel, а в Panel создавать Canvas. Как-то накручено. 

Спасибо!
PM MAIL   Вверх
techmax
Дата 24.1.2011, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У Skipy есть хорошо написанная статья по этому подводу http://www.skipy.ru/
PM MAIL Skype   Вверх
Skipy
Дата 24.1.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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





--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
_Y_
Дата 24.1.2011, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Skipy, великолепная статья, но на поставленный вопрос прямого ответа она не дает к сожалению. Вспоминая старую крылатую фразу "Человек хотел банан, а получил горилу держащую банан и все окружающие джунгли в придачу".

У меня вот есть подобная проблема. После обновления содержания JTable не отражает изменений. А вот если чуть пошевелить размер JForm то в таблице появляются новые значения. Сколько ни бьюсь с перерисовкой, ничего хорошего не выходит.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
dorogoyIV
Дата 24.1.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



всем привет!!!
я не ходил по ссылкам, выложенным в этой теме, но если мне не изменяет память, метод paint постоянно, при любом шевелении, вызывается для компонента.

для ТС посоветовал бы писать примерно так:
Код

 class MyPanel extends JPanel // sorry Panel :)
 {
  MyPanel(/*parameters*/)
  {
  }

  public void paint(Graphics g) // for swing paintComponent(...)
  {
   /*drawing*/
  }
 {



_Y_, перерисовка в твоем случае не выход, надо обновлять модель таблицы
PM MAIL   Вверх
_Y_
Дата 24.1.2011, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(dorogoyIV @ 24.1.2011,  16:55)
_Y_, перерисовка в твоем случае не выход, надо обновлять модель таблицы

Чего-то я не догоняю. Модель таблицы это не графический компонент, а хранилище данных. И что подразумевается под ее обновлением?


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
aleksandy
Дата 24.1.2011, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dorogoyIV @ 24.1.2011,  16:55)
И что подразумевается под ее обновлением?

Генерирование соответствующих TableModelEvent
PM   Вверх
_Y_
Дата 24.1.2011, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



aleksandy, спасибо. Въехал.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Skipy
Дата 25.1.2011, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
Skipy, великолепная статья, но на поставленный вопрос прямого ответа она не дает к сожалению. Вспоминая старую крылатую фразу "Человек хотел банан, а получил горилу держащую банан и все окружающие джунгли в придачу".


Э-э-э... Вопрос был - как работает метод paint? В смысле, была просьба, объяснить, как он работает. Я объяснил. Не? На какой вопрос я не ответил?


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
_Y_
Дата 25.1.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Skipy, я вот про это
Цитата(sidiakin @  23.1.2011,  22:51 Найти цитируемый пост)
И не очень понятно зачем мне Canvas, если я могу просто создать Panel и в ней рисовать. Зачем мне создавать Frame, в нем Panel, а в Panel создавать Canvas. Как-то накручено. 

В принципе из Вашей статьи многое становится понятно. Но простого ответа на эти вопросы там я не углядел. 

А про метод paint все рассказано - никаких вопросов не остается (у меня во всяком случае) smile 



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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