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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сначало нарисовать 10 картинок.. потом показать их пользователю.. как ? 
:(
    Опции темы
Domestic Cat
Дата 22.11.2004, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Рисовать в канвe можно, тy просто делаешь неправильно. Воt пример :

Код


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


public class B extends JFrame
{  
   B()
   {
       setSize(400, 400);
       MyCanvas myCanvas = new MyCanvas();
       myCanvas.addMouseListener(myCanvas);
       getContentPane().add(myCanvas, BorderLayout.CENTER);
       setDefaultCloseOperation(EXIT_ON_CLOSE);
       setVisible(true);
   }
   public static void main(String[] args)    
   {
       new B();
   }

}

class MyCanvas extends Canvas implements MouseListener
{
   BufferedImage bi = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
   Image im1 = new ImageIcon("av-4437.jpg").getImage();
   Image im2 = new ImageIcon("av-3725.gif").getImage();
   MyCanvas()
   {
       Graphics to = bi.getGraphics();
       to.setColor(Color.WHITE);
       to.fillRect(0, 0, 400, 400);
       to.drawImage(im1, 0, 0, im1.getWidth(null), im1.getHeight(null), null);
       to.drawImage(im2, 200, 200, im2.getWidth(null), im2.getHeight(null), null);
       to.dispose();
   }
   public void paint(Graphics g)
   {
       
       g.drawImage(bi, 0, 0, null);
   }
   
   public void mouseClicked(MouseEvent m)
   {
       Graphics to = bi.getGraphics();
       to.setColor(Color.WHITE);
       to.fillRect(0, 0, 400, 400);
       to.drawImage(im1, 200, 200, im1.getWidth(null), im1.getHeight(null), null);
       to.drawImage(im2, 0, 0,im2.getWidth(null), im2.getHeight(null), null);
       to.dispose();
       repaint(); // <------
   }
   
   public void mousePressed(MouseEvent m) {}
   public void mouseReleased(MouseEvent m) {}
   public void mouseExited(MouseEvent m) {}
   public void mouseEntered(MouseEvent m) {}
}



Это сообщение отредактировал(а) Domestic Cat - 22.11.2004, 18:27

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  B.java


--------------------

PM   Вверх
polosatij
Дата 22.11.2004, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

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



Domestic Cat

почему-то очень многие дают мне пример именно так:
Цитата(Domestic @ 22.11.2004, 18:26)
implements MouseListener


а почему не анонимным классом? это дело вкуса smile
я, например, не люблю когда лишние строки валяются.. (= строки интерфейса)

за пример, паси smile
сегодня попробую чуть по другому smile




--------------------
PM   Вверх
Domestic Cat
Дата 22.11.2004, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



можно и анонимным классом, но так увеличивается размер программы (за счет создания отдельного MyCanvas$1.class)


--------------------

PM   Вверх
Zandr
Дата 23.11.2004, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И дело вкуса тоже.
Когда у тебя фрейм с одной кнопкой, можно
Код

class MyApp extends JFrame implements ActionListener

А если у тя куча кнопок, то извиняй smile
PM MAIL   Вверх
polosatij
  Дата 23.11.2004, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

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



Domestic Cat, я посмотрел вчера твой вариант.. и свои.. привожу здесь переделку твоего варианта, под мой: (у меня пара тысяч строк в проекте, мне так просто не переделать это всё на твой лад, поэтому хочу разобраться, где и что я не правильно делаю):

Код

package domestic;

import java.io.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;


public class B extends JFrame implements MouseListener
{
 BufferedImage bi = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
 Image im1;
 Image im2;
 
 Canvas canvas = new Canvas() {
   public void paint(Graphics g) {
      g.drawImage(bi, 0, 0, null);
   }
 };

 B() {
   setSize(400, 400);
   canvas.addMouseListener(this);
   getContentPane().add(canvas, BorderLayout.CENTER);
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   im1 = new ImageIcon("1.jpg").getImage();
   im2 = new ImageIcon("2.gif").getImage();
   
   Graphics to = bi.getGraphics();
   to.setColor(Color.WHITE);
   to.fillRect(0, 0, 400, 400);
   to.drawImage(im1, 0, 0, null);
   to.drawImage(im2, 200, 200, null);
   to.dispose();
   setVisible(true);
 }

 public static void main(String[] args) {
   new B();
 }

 public void mouseClicked(MouseEvent m) {
 }

 public void mousePressed(MouseEvent m) {
   System.out.println("!");
   Graphics to = bi.getGraphics();
   to.setColor(Color.WHITE);
   to.fillRect(0, 0, 400, 400);
   to.drawImage(im1, m.getX(), m.getY(), null);
   to.drawImage(im2, m.getX() + 10, m.getY() + 10, null);
   to.dispose();
   repaint(); // <------

 }

 public void mouseReleased(MouseEvent m) {}

 public void mouseExited(MouseEvent m) {}

 public void mouseEntered(MouseEvent m) {}
}



почему картинка перерисовывается только после смены активных окон smile
заранее паси smile
Добавлено @ 13:37
Цитата(Domestic @ 22.11.2004, 18:26)
тy просто делаешь неправильно.


до BufferedImage у меня всё работало замечательно (не устраивало лишь мигание и "частота процессора")


--------------------
PM   Вверх
Domestic Cat
Дата 23.11.2004, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



repaint() должен перерисовывать канву, а не фрейм, как у тебя:

Цитата
canvas.repaint(); 



--------------------

PM   Вверх
polosatij
  Дата 23.11.2004, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

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



У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-Уря-я-я-я-я-я-я.. Заработало! (с) Простоквашино smile

точно.. а я думал.. smile

нужно только еще один кусок подогнать.. вечером принесу..
Domestic Cat кидай домашний адрес, придётся тебе из германии пива прислать smile, детю (детям игрушек), жене цветы =)))

и всё-таки коты понимают друг друга (с) полосатый


--------------------
PM   Вверх
Domestic Cat
Дата 23.11.2004, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата
Domestic Cat кидай домашний адрес, придётся тебе из германии пива прислать , детю (детям игрушек), жене цветы =)))


smile дороговатo выйдет, и вообщe котов спаивать smile гринпис осудит

Цитата
и всё-таки коты понимают друг друга (с) полосатый


АААА так ты тоже Кот??? Растет силa кошачья на форумe smile smile




--------------------

PM   Вверх
AntonSaburov
Дата 23.11.2004, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



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

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

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


 




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


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

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