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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование на JPanel 
V
    Опции темы
Neox_GeForce
Дата 23.1.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне нужно отрисовать на панеле картинку. Я делаю так
Код

class MPanel extends JPanel{

        public MPanel(){
                super(true);

        }
        public void repaint(Image drawedImage){
          
        int x=drawedImage.getHeight(null);
        int y=drawedImage.getWidth(null);
        this.setSize(x,y);
           Graphics g=this.getGraphics();


        g.drawImage(drawedImage,x,y,null);

        }
    }


а потом
Код


 output=new MPanel();

                  this.add(output);


  item1.addItemListener(new ItemListener() {
               public void itemStateChanged(ItemEvent e) {
  try {

      if(e.getStateChange()==0){
       drawedImage=ImageIO.read(new File("1.jpg"));

      }   else if(e.getStateChange()==1){
        drawedImage=ImageIO.read(new File("2.jpg"));

      }   else
      {
        drawedImage=ImageIO.read(new File("3.jpg"));

      }


      drawImage(drawedImage);
                   } catch (IOException e1) {
                       e1.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                   }


               }
           });

  private void drawImage(Image drawedImage) {

         output.repaint(drawedImage);

    }
 
 Но почему то ничего не рисуется


--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
jk1
Дата 23.1.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Для рисования на JPanel необходимо переопределить метод PaintComponent(). Вот реализация под ваш случай:
Код

    private static class Panel extends JPanel {
        private Image image;

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            if (image != null) {
                g.drawImage(image, 0, 0, null);
            }
        }

        public void setImage(Image image) {
            this.image = image;
            this.setSize(new Dimension(image.getWidth(null), image.getHeight(null)));
            repaint();
        }
    }


Вторая ваша ошибка: метод drawImage() принимает не размер изображения, а координаты для его левого верхнего угла

P. S. Если на вашем наследнике JPanel предполагается только эта картинка, можно сделать гораздо проще. Замените его на JLabel и воспользуйтесь его методом setIcon()


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Neox_GeForce
Дата 24.1.2010, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спс. smile 


--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL 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.0945 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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