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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кто и где закрашивает старый овал, Вопрос новичка :о) 
V
    Опции темы
dorogoyIV
Дата 11.1.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



вот посмотри: - здесь можно таскать инажимать
Код

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class DrawOval extends JFrame
                      implements MouseListener,
                          MouseMotionListener
{
 int x=100, y=100;

 DrawOval()
 {
  setBounds(100,100,400,300);
  addMouseListener(this);
  addMouseMotionListener(this);
 }

 public void paint(Graphics g)
 {
  g.drawOval(x, y, 10, 10);
 }

 public void mouseEntered(MouseEvent e){}
 public void mouseExited(MouseEvent e){}
 public void mousePressed(MouseEvent e){}
 public void mouseReleased(MouseEvent e){}

 public void mouseClicked(MouseEvent e)
 {
  x=e.getX();
  y=e.getY();
  repaint();
 }

 public void mouseMoved(MouseEvent e){}
 public void mouseDragged(MouseEvent e)
 {
  x=e.getX();
  y=e.getY();
  repaint();
 }

 public static void main(String [] args)
 {
  JFrame f=new DrawOval();
  f.setVisible(true);
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}



Это сообщение отредактировал(а) dorogoyIV - 11.1.2008, 18:22
PM MAIL   Вверх
Prol
Дата 11.1.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(batigoal @ 11.1.2008,  17:21)
Prol, повторяю в третий раз - это делает метод repaint().

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

Сейчас какой-то репейнт затирает без моего спросу безобидный овал, завтра какой-нибудь другой метод без моего спросу уничтожит данные пользователя и меня уволят с работы.
Я не привык, чтобы мои программы делали то, чего я в них явно не прописал.

Это сообщение отредактировал(а) Prol - 11.1.2008, 21:30
PM MAIL WWW ICQ   Вверх
w1nd
Дата 11.1.2008, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Prol @  11.1.2008,  21:20 Найти цитируемый пост)
Повторю в третий раз, как сказать етому репайнту, чтобы он не делал того, что я его не прошу?

Никоим образом.

Цитата(Prol @  11.1.2008,  14:46 Найти цитируемый пост)
По опыту я знаю, что если я нарисовал один пиксел на экране, то он будет нарисованный, пока я сам его оттуда не сотру другим пикселом.

Такое возможно только в однооконных системах. В многооконной системе каждое окно и каждый компонент должны уметь полностью нарисовать себя в любой момент, потому что экран не принадлежит ни одному из них. Если вы нарисовали овал #1 и хотите, чтобы он остался на месте, вы должны перерисовывать его всякий раз, когда вызывается paint().

Цитата(Prol @  11.1.2008,  21:20 Найти цитируемый пост)
Я не привык, чтобы мои программы делали то, чего я в них явно не прописал.

Вы ничего не написали в вашей программе для того, чтобы однажды нарисованные фигуры сохранялись.

Это сообщение отредактировал(а) w1nd - 12.1.2008, 01:57


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


Нелетучий Мыш
****


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

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



Цитата(Prol @  11.1.2008,  22:20 Найти цитируемый пост)
Повторю в третий раз, как сказать етому репайнту, чтобы он не делал того, что я его не прошу?

Раньше у тебя этот вопрос не звучал, было только - "кто?" 
Думаю, ты можешь его переопределить у себя в классе, но это - неправильный подход. Правильный - это запомнить тем или иным образом предыдущие положения овалов и отрисовывать их все в paint().


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Prol
Дата 12.1.2008, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я понял, в чём проблема. :о)))

Я привык, что монитор (окно) - это память. Например:
- рисуем пиксел в координатах 100,100
- рисуем пиксел в координатах 200,200

Пока мы ничего не рисуем в координатах 100,100, то там останется пиксел, который мы нарисовали раньше. 
Поэтому меня напугало исчезновение овала со старого места.

А вот что я понял:
Что при любом событии перерисовывается полностью всё окно, начиная от фона и заканчивая каждым объектом.

Я привык перемещение объекта программировать так: сначала его стереть на старом месте, потом нарисовать на новом.

А тут в Java получается, что я его на новом месте нарисовал своим методом paint, а кто-то его на старом месте стёр. А я не люблю, чтобы моя прога делала что-то без моего на то прямого указания.

Скачал исходники, нашёл repaint в java.awt.Component и понял, что при любом событии вызывается пайнт контейнера, который полностью его перерисовывает, начиная с фона. Фон перерисовывается. старый овал стирается, потом рисуется новый овал. :о))) 

Зверство. Я не привык чтобы реакцией на любое событие была перерисовка всего окна со всеми объектами изображёнными в окне... 

а потом удивляются, куда делась мощность современных компов...

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

нда...
PM MAIL WWW ICQ   Вверх
w1nd
Дата 12.1.2008, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Prol, это не свойство java или ещё какого-либо runtime. Это свойство любой графической оконной системы. Отродясь. Уже лет двадцать как. И именно для того, чтобы ресурсов компьютера (в данном случае - памяти) хоть на что-то хватало. Вылезайте уже из каменного века - текстовых оконных систем smile 

Цитата(Prol @  12.1.2008,  01:30 Найти цитируемый пост)
Я привык, что монитор (окно) - это память. Например:- рисуем пиксел в координатах 100,100- рисуем пиксел в координатах 200,200

Эта память разделяется между всеми компонентами, которые могут перекрываться. Вы что же думаете, что в видеопамять можно запихать эдак сотню-другую видеостраниц?!

Это сообщение отредактировал(а) w1nd - 12.1.2008, 01:59


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Prol
Дата 12.1.2008, 02:11 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да я понял :о)
Раньше компьютеры были большие и памяти имели мало, поэтому приходилось в сто килобайт писать всё приложение причём с картинками, которое в реалтайме обслуживало сотню юзеров :о)
А сейчас компьютеры маленькие, память имеют - экономить не нужно, так что можно и окна перерисовывать полностью, плевать на ресурсы, потому что обслуживает одного юзера  :о)))

В видеопамять можно запихнуть хоть тысячу видеостраниц :о) Прерывание на загрузку отсутствуещей в памяти страницы ещё никто не отменял.
PM MAIL WWW ICQ   Вверх
w1nd
Дата 12.1.2008, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Prol @  12.1.2008,  02:11 Найти цитируемый пост)
Раньше компьютеры были большие и памяти имели мало, поэтому приходилось в сто килобайт писать всё приложение причём с картинками, которое в реалтайме обслуживало сотню юзеров :о)А сейчас компьютеры маленькие, память имеют - экономить не нужно, так что можно и окна перерисовывать полностью, плевать на ресурсы, потому что обслуживает одного юзера  :о)))

Вы бы хоть прочитали, что я написал (если сами не понимаете) и немножко подумали прежде.

Цитата(Prol @  12.1.2008,  02:11 Найти цитируемый пост)
В видеопамять можно запихнуть хоть тысячу видеостраниц :о) Прерывание на загрузку отсутствуещей в памяти страницы ещё никто не отменял.

Вас обманули. Такой возможности нет и никогда не было. Прерывание есть, но не в видеопамяти честь.



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


Эксперт
***


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

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



Цитата(Prol @  12.1.2008,  05:11 Найти цитируемый пост)
В видеопамять можно запихнуть хоть тысячу видеостраниц

Если я ничего не путаю, то в винде, например, сейчас доступна либо одна страница памяти, либо есть возможность получить доступ ко второй странице и использовать её в качестве видеобуфера. Нарисовал в буфер - перключился на него, нарисовал в предыдущем - перключился. Но это - нативная штука и в Java вроде бы явным образом не присутствует (хотя гарантировать не буду, ибо на этом уровне не лазал).
Про линукс и другие платформы тоже ничего не скажу, ибо не знаю.

P.S. Писать на Java используя парадигмы DOS'а - это круто. smile Скоро начнём на Java обрабатывать прерывания клавиатуры и дисков.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Prol
Дата 12.1.2008, 04:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(nornad @ 12.1.2008,  03:47)
P.S. Писать на Java используя парадигмы DOS'а - это круто. smile Скоро начнём на Java обрабатывать прерывания клавиатуры и дисков.

 smile 

На Java работают микроволновки и стиральные машинки, и прекрасно обрабатывают прерывания от электромоторов и кнопок на панелях управления этими дивайсами :о)

P.S. Рекомендую почитать, что было до "парадигмы ДОСа" :о) Вы удивитесь, насколько опошлились программисты, развращённые безответственностью за свои программы. Более того, программисты воинственно обнаглели, объявив всему миру в своих так называемых "лицензиях", что не несут ответственности за последствия действия своих программ.
PM MAIL WWW ICQ   Вверх
nornad
Дата 12.1.2008, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Prol @  12.1.2008,  07:06 Найти цитируемый пост)
На Java работают микроволновки и стиральные машинки, и прекрасно обрабатывают прерывания от электромоторов и кнопок на панелях управления этими дивайсами :о)

Только вот там малость не та JVM и многозадачности не наблюдается. Ты же хочешь рисовать в многозадачной среде, а посему - забудь о микроволновках и интеллектуальных открывашках пивных банок.

Чтобы писать сносно на каком-либо языке надо в общих чертах с ним разобраться и знать основные фразы. Чтобы писать правильно - надо понять язык и принять его. Заметь, "сносно" никогда не бывает лучшего качества, чем "правильно".

Цитата(Prol @  12.1.2008,  07:06 Найти цитируемый пост)
Рекомендую почитать, что было до "парадигмы ДОСа" :о) Вы удивитесь

Будем пиписькамивозрастом меряться? Я в курсе, что было "до". Я знаю, как "надо". Но в современных условиях частью критериев можно немного пренебречь. Отсюда и GC, кстати. Потому что памяти сейчас много. А когда совсем не хватает - вот тогда наступают тяжёлые времена для развращённой прыщавой восторженной молодёжи smile  и всех приходится выручать кому-то из старичков smile  (ну, иногда вместо старичка на помощь приходит сетевой совет из далёкого прошлого нашей планеты или коллективный разум нескольких форумов).
Но при всём при этом эти прыщавые юнцы, приняв современную идеологию, будут писать быстрее тебя с незыблемыми принципами. И могут оттяпать немалый кусок хлеба, если не подсуетиться вовремя.  smile 

P.S. Если кому интересно, мой возраст есть в профиле. Точнее, дата рождения. Не старик, конечно, но и не прыщав уже, как мне кажется.  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Prol
Дата 12.1.2008, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(nornad @ 12.1.2008,  06:00)
Но при всём при этом эти прыщавые юнцы, приняв современную идеологию, будут писать быстрее тебя с незыблемыми принципами. И могут оттяпать немалый кусок хлеба, если не подсуетиться вовремя.  smile 

Ну и пусть тяпают :о) Всех денег не заработаешь :о) Тем более, скоро пенсия :о) Пусть молодые суетятся, пока ихние девки моложе :о)
PM MAIL WWW ICQ   Вверх
nornad
Дата 12.1.2008, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Prol @  12.1.2008,  10:32 Найти цитируемый пост)
Тем более, скоро пенсия

Ладно, уел, крыть нечем.  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Prol
Дата 12.1.2008, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(nornad @ 12.1.2008,  08:17)
Ладно, уел, крыть нечем.  smile

 smile 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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