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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка картинки на панель 
:(
    Опции темы
Vasi
Дата 7.1.2013, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На приложении висит кнопка для загрузки картинки,на кнопке событие описано так:
Код

private void loadImageMouseClicked(MouseEvent evt){
        String fileToLoad = null;
        BufferedImage imgToLoad = null;
        JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Select File To Load");
        int returnVal = chooser.showDialog(drawingPanel, "Select file");
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            fileToLoad = chooser.getSelectedFile().toString();
        }
        Graphics2D graph = (Graphics2D) drawingPanel.getGraphics();
        try{
        imgToLoad=ImageIO.read(new File(fileToLoad));
        }catch (IOException excp){
            excp.printStackTrace();
        }
        graph.drawImage(imgToLoad, null, 150,50);
        
    }

Проблема в том что на панеле ничего не отображается.
Вот весь код приложения:
Код

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


package javalab6;

import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.*;
/**
 *
 * @author Administrator
 */



public class JavaLab6 extends javax.swing.JFrame {
final static float dash1[] = {10.0f};
    final static BasicStroke dashed =
        new BasicStroke(1.0f,
                        BasicStroke.CAP_BUTT,
                        BasicStroke.JOIN_MITER,
                        10.0f, dash1, 0.0f);
    /**
     * Creates new form NewJFrame
     */
    public JavaLab6() {
        initComponents();
    }

    
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        drawingPanel = new javax.swing.JPanel();
        drawRectangle = new javax.swing.JButton();
        drawLine = new javax.swing.JButton();
        drawEllipse = new javax.swing.JButton();
        drawFilledRectangle = new javax.swing.JButton();
        drawFilledLine = new JButton();
        drawFilledEllipse = new JButton();
        saveImageButton = new JButton();
        loadImageButton = new JButton();
        imageLabel = new JLabel();

       setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(imageLabel);
        imageLabel.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(41, 41, 41)
                .addComponent(imageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 189, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(35, 35, 35)
                .addComponent(imageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(82, Short.MAX_VALUE))
        );

        drawRectangle.setText("Draw Rectangle");
        drawRectangle.setName("drawRectangle"); // NOI18N
        drawRectangle.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                drawRectangleMouseClicked(evt);
            }
        });

        drawLine.setText("Draw Line");
        drawLine.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                drawLineMouseClicked(evt);
            }
        });

        drawEllipse.setText("Draw Ellipse");
        drawEllipse.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt){
                drawEllipseMouseClicked(evt);
            }
        });

        drawFilledRectangle.setText("Draw Filled Rectangle");
        drawFilledRectangle.addMouseListener(new MouseAdapter(){
            public void mouseClicked(MouseEvent evt){
                drawFilledRectangleMouseClicked(evt);
            }
    });
        drawFilledLine.setText("Draw Filled Line");
        drawFilledLine.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt){
                drawFilledLineMouseClicked(evt);
            }
        });
        drawFilledEllipse.setText("Draw Filled Ellipse");
        drawFilledEllipse.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt){
                drawFilledEllipseMouseClicked(evt);
            }
        });
        saveImageButton.setText("Save Image");
        saveImageButton.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt){
                saveImageMouseClicked(evt);
            }
        });
        loadImageButton.setText("Load Image");
        loadImageButton.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt){
                loadImageMouseClicked(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(drawingPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(saveImageButton)
                        .addGap(18,18,18)
                        .addComponent(loadImageButton)
                        .addGap(18,18,18)
                        .addComponent(drawRectangle)
                        .addGap(18, 18, 18)
                        .addComponent(drawLine)
                        .addGap(18, 18, 18)
                        .addComponent(drawEllipse)
                        .addGap(18, 18, 18)
                        .addComponent(drawFilledRectangle)
                        .addGap(18,18,18)
                        .addComponent(drawFilledLine)
                        .addGap(18,18,18)
                        .addComponent(drawFilledEllipse)
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(9, 9, 9)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(drawRectangle)
                    .addComponent(drawLine)
                    .addComponent(saveImageButton)
                    .addComponent(loadImageButton)
                    .addComponent(drawEllipse)
                    .addComponent(drawFilledRectangle)
                    .addComponent(drawFilledLine)
                    .addComponent(drawFilledEllipse))
                .addGap(58, 58, 58)
                .addComponent(drawingPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void drawRectangleMouseClicked(java.awt.event.MouseEvent evt) {
                figureName = "Rectangle";
                buff = new BufferedImage(400, 300, BufferedImage.TYPE_3BYTE_BGR);
                Graphics graph = drawingPanel.getGraphics();
                graph.clearRect(0 ,0, 1000,1000);
                graph.drawRect(150, 50, 100, 100);
                Graphics savingGraph = buff.getGraphics();
                savingGraph.drawRect(150, 50, 100, 100);
                graph.dispose();
                savingGraph.dispose();
            
    }
    private void drawLineMouseClicked(MouseEvent evt){
        figureName = "Line";
        buff = new BufferedImage(400, 300, BufferedImage.TYPE_3BYTE_BGR);
        Graphics graph = drawingPanel.getGraphics();
        graph.clearRect(0 ,0, 1000,1000);
        graph.drawLine(150, 50, 100, 100);
        Graphics savingGraph = buff.getGraphics();
        savingGraph.drawLine(150, 50, 100, 100);
        graph.dispose();
        savingGraph.dispose();
    }
    private void drawEllipseMouseClicked(MouseEvent evt){
        figureName = "Ellipse";
        buff = new BufferedImage(400, 300, BufferedImage.TYPE_3BYTE_BGR);
        Graphics2D graph = (Graphics2D) drawingPanel.getGraphics();
        graph.clearRect(0, 0, 1000, 1000);
        graph.draw(new Ellipse2D.Double(150,50,100,100));
        Graphics2D savingGraph =(Graphics2D) buff.getGraphics();
        savingGraph.draw(new Ellipse2D.Double(150,50,100,100));
        graph.dispose();
        savingGraph.dispose();
    }
    private void drawFilledRectangleMouseClicked(MouseEvent evt){
        figureName = "FilledRectangle";
        buff=new  BufferedImage(400, 300, BufferedImage.TYPE_3BYTE_BGR);
        Graphics2D graph = (Graphics2D) drawingPanel.getGraphics();
        graph.clearRect(0, 0, 1000, 1000);
        graph.setPaint(Color.MAGENTA);
        graph.fill(new Rectangle2D.Double(150, 50, 100, 100));
        Graphics2D savingGraph = (Graphics2D)buff.getGraphics();
        savingGraph.setPaint(Color.MAGENTA);
        savingGraph.fill(new Rectangle2D.Double(150, 50, 100, 100));
        graph.dispose();
        savingGraph.dispose();
    }
    private void drawFilledLineMouseClicked(MouseEvent evt){
        figureName = "FilledLine";
        buff = new  BufferedImage(400, 300, BufferedImage.TYPE_3BYTE_BGR);
        Graphics2D graph = (Graphics2D) drawingPanel.getGraphics();
        graph.clearRect(0, 0, 1000, 1000);
        //graph.setStroke(dashed);
        graph.setColor(Color.MAGENTA);
        graph.draw(new Line2D.Double(150, 50, 100, 100));
        Graphics2D savingGraph = (Graphics2D)buff.getGraphics();
        savingGraph.setColor(Color.MAGENTA);
        savingGraph.draw(new Line2D.Double(150, 50, 100, 100));
        graph.dispose();
        savingGraph.dispose();
        
    }
    private void drawFilledEllipseMouseClicked(MouseEvent evt){
        figureName = "FilledEllipse";
        buff = new  BufferedImage(400, 300, BufferedImage.TYPE_3BYTE_BGR);
        Graphics2D graph = (Graphics2D) drawingPanel.getGraphics();
        graph.clearRect(0, 0, 1000, 1000);
        graph.setPaint(Color.MAGENTA);
        graph.fill(new Ellipse2D.Double(150,50,100,100));
        Graphics2D savingGraph = (Graphics2D)buff.getGraphics();
        savingGraph.setColor(Color.MAGENTA);
        savingGraph.fill(new Ellipse2D.Double(150,50,100,100));
        graph.dispose();
    }
    
    private void saveImageMouseClicked(MouseEvent evt){
        String myFile = null;
        JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Select target directory");
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int returnVal = chooser.showDialog(drawingPanel, "Select dir");
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            myFile = chooser.getSelectedFile().toString();
        }
        createJPEGFile(myFile);
    }
    private void loadImageMouseClicked(MouseEvent evt){
        String fileToLoad = null;
        imgToLoad = null;
        JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Select File To Load");
        int returnVal = chooser.showDialog(drawingPanel, "Select file");
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            fileToLoad = chooser.getSelectedFile().toString();
        }
        Graphics2D graph = (Graphics2D) drawingPanel.getGraphics();
        try{
        imgToLoad=ImageIO.read(new File(fileToLoad));
        }catch (IOException excp){
            excp.printStackTrace();
        }
        Icon icon = new ImageIcon(fileToLoad);
        imageLabel.setIcon(icon);
        /*graph.clearRect(0, 0, 1000, 1000);
        graph.drawImage(imgToLoad,150,50,null);
        graph.dispose();
        */
    }
    
   
    private void createJPEGFile(String outputPath){
       /* ByteArrayOutputStream dest = new ByteArrayOutputStream();
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(dest);
        JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(buff);
        param.setQuality(0.9f, false);
        encoder.setJPEGEncodeParam(param);
        try {
            encoder.encode(buff);
        } catch (IOException ex) {
            Logger.getLogger(JavaLab6.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ImageFormatException ex) {
            Logger.getLogger(JavaLab6.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            dest.close();
        } catch (IOException ex) {
            Logger.getLogger(JavaLab6.class.getName()).log(Level.SEVERE, null, ex);
        }

        byte[] bytes = dest.toByteArray();
        ImageIO.write();*/
        try{
       // File outputFile = new File(outputPath+"\\"+figureName+Calendar.getInstance().getTime()+".png");
        long creationTime = System.nanoTime();
        String outputFile = outputPath+"\\"+figureName+creationTime+".jpg";
        ImageIO.write(buff, "jpg", new File(outputFile));
        }catch(IOException e){
            e.printStackTrace();
        }
        
    }

    /**
     * @param args the command line arguments
     */
   
    // Variables declaration - do not modify
    private javax.swing.JButton drawRectangle;
    private javax.swing.JButton drawLine;
    private javax.swing.JButton drawEllipse;
    private javax.swing.JButton drawFilledRectangle;
    private JButton saveImageButton;
    private JButton drawFilledLine;
    private JButton drawFilledEllipse;
    private BufferedImage imgToLoad;
    private JButton loadImageButton;
    private String figureName;
    private BufferedImage buff ;
    private JLabel imageLabel;
    private javax.swing.JPanel drawingPanel;
    // End of variables declaration

    
  
    public static void main(String[] args) {
        // TODO code application logic here
        JavaLab6 application = new JavaLab6();
        application.setVisible(true);
        application.pack();
    }
}


PM MAIL   Вверх
Mirkes
Дата 9.1.2013, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сожалею, но у меня ваш проек вообще не запустился.
На стади сборки он грязно ругался на ряд пакетов, как на нестандартные в точности на следующие
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

А при запуске ругается на попытку вставить родительский контейнер в него самого.
Код

Exception in thread "main" java.lang.IllegalArgumentException: adding container's parent to itself
    at java.awt.Container.checkAddToSelf(Container.java:420)
    at java.awt.Container.addImpl(Container.java:1038)
    at java.awt.Container.add(Container.java:365)
    at javax.swing.GroupLayout.getComponentInfo(GroupLayout.java:1110)
    at javax.swing.GroupLayout.access$600(GroupLayout.java:191)
    at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2890)
    at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2858)
    at javax.swing.GroupLayout$Group.addComponent(GroupLayout.java:1490)
    at javax.swing.GroupLayout$SequentialGroup.addComponent(GroupLayout.java:1771)
    at pan.JavaLab6.initComponents(JavaLab6.java:78)
    at pan.JavaLab6.<init>(JavaLab6.java:50)
    at pan.JavaLab6.main(JavaLab6.java:360)



К сожалению нчем помочь не могу. Тем более, что в приведенном коде вывод картинки на панель вообще закоментарен.
Я выводил картинки на панель, но как правило внутри метода paintComponent панели. На тему рисования есть хорошая статья тут


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


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

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