Новичок
Профиль
Группа: Участник
Сообщений: 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(); } }
|
|