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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отображение и смена рисунков в панели 
:(
    Опции темы
xber9
Дата 24.1.2008, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



нашел тут такую панельку на этой сайте
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Impanel;

/**
 *
 * @author xber9
 */
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class PicturePanel extends javax.swing.JPanel {
    // Храним 2 изображения: оригинальное и текущее.
    // Оригинальное используется для получения текущего в зависимости от размеров панели.
    // Текущее непосредственно прорисовывается на панели.
    private BufferedImage originalImage = null;
    private Image image = null;

    public PicturePanel() {
        initComponents();
    }
    
    private void initComponents() {
        setLayout(null);
        addComponentListener(new java.awt.event.ComponentAdapter() {
        });

    }
    
    // Реакция на изменение размеров панели - изменение размера изображения.

    // Берем прорисовку в свои руки.
    public void paint(Graphics g) {
        // Рисуем картинку
        if (image != null) {
            g.drawImage(image, 0, 0, null);
        }
       
        // Рисуем подкомпоненты.
        super.paintChildren(g);
        // Рисуем рамку        
        super.paintBorder(g);
    }
    
    // Методы для настройки картинки.
    public BufferedImage getImage() {
        return originalImage;
    }
    
    public void setImage(BufferedImage image) {
        this.image = image;
    }

    public void setImageFile(File imageFile) {
        try {
            if (imageFile == null) {
                originalImage = null;
            }
            BufferedImage bi = ImageIO.read(imageFile);
            originalImage = bi;
        } catch (IOException ex) {
            System.err.println("Неудалось загрузить картинку!");
            ex.printStackTrace();
        }
        repaint();
    }
}


доавил ее на свою форму 
Код

    private Impanel.PicturePanel picturePanel1;
   picturePanel1 = new Impanel.PicturePanel();
      picturePanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        javax.swing.GroupLayout picturePanel1Layout = new javax.swing.GroupLayout(picturePanel1);
        picturePanel1.setLayout(picturePanel1Layout);
        picturePanel1Layout.setHorizontalGroup(
            picturePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 109, Short.MAX_VALUE)
        );
        picturePanel1Layout.setVerticalGroup(
            picturePanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 102, Short.MAX_VALUE)
        );

        jScrollPane2.setViewportView(picturePanel1);
рядом сделал кнопку "обзор"
в кнопке прописал
Код

    private void BrouserActionPerformed(java.awt.event.ActionEvent evt) {
int res= jFC.showDialog(null, null);
        if(res==JFileChooser.APPROVE_OPTION){
        File patch=jFC.getSelectedFile();
               
        picturePanel1.setImageFile(patch);
        }
    }
    



нажымвю на кнопку выбира. фаил рисунок не меняется  
чтоя не так длеаю
PM MAIL   Вверх
Kangaroo
Дата 24.1.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



В панеле новая картинка устанавливается в переменную originalImagе
Код

originalImage = bi;


А рисуется image
Код

// Рисуем картинку    
        if (image != null) {    
            g.drawImage(image, 0, 0, null);    
        }

А связи между originalImage & image не увидел.
Где такую панель нашел? Может код пропустил какой-нибудь?


--------------------
Lost....
PM MAIL MSN   Вверх
xber9
Дата 24.1.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



код брал отсюдв

vingrad

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


AA - Aussie Animal
****


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

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



Зачем же вы вот эти куски выкинули:
Код

 private void initComponents() {    
        setLayout(null);    
        addComponentListener(new java.awt.event.ComponentAdapter() {    
            public void componentResized(java.awt.event.ComponentEvent evt) {    
                formComponentResized(evt);    
            }    
        });    
    }    
     
    // Реакция на изменение размеров панели - изменение размера изображения.    
    private void formComponentResized(java.awt.event.ComponentEvent evt) {    
        int w = this.getWidth();    
        int h = this.getHeight();    
        if ((originalImage != null) && (w > 0) && (h > 0)) {    
            image = originalImage.getScaledInstance(w, h, Image.SCALE_DEFAULT);    
            this.repaint();    
        }    
    }


Тут меняется размер картинки при изменении размера панели.
А вам нужно, когда устанавливаете originalImage вызвать formComponentResized(null);
Попробуйте smile 


--------------------
Lost....
PM MAIL MSN   Вверх
xber9
Дата 24.1.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



получилось 
пасибочки smile 


попутный вопрос 
как перед вставкой поверить размер картинки ( ширену и в высоту)?
PM MAIL   Вверх
Kangaroo
Дата 24.1.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(xber9 @  24.1.2008,  17:14 Найти цитируемый пост)
как перед вставкой поверить размер картинки ( ширену и в высоту)?

a getHeight() & getWidth?


--------------------
Lost....
PM MAIL MSN   Вверх
xber9
Дата 24.1.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



не ты непонял не размеры панели после закруски рисунка а зазмеры самого рисунка который храниться  в объекте File
PM MAIL   Вверх
Kangaroo
Дата 24.1.2008, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



xber9, а у image тоже есть эти методы или они не работают?
Я, честно сказать, не пробовал, но знаю что есть такие smile


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


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

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