知道美河 | 上传资料 | VIP申请 | 精品课程 | 资料搜索 | 问题反馈 | 会员手册 | 积分消费 | 积分充值 | 帐号保护
美河学习学习在线赞助VIP

美河学习在线(主站) eimhe.com

用户名  找回密码
 建立账号
查看: 6767|回复: 0

高手帮帮忙!Java程序出问题了

[复制链接]
发表于 2010-9-29 10:39:32 | 显示全部楼层 |阅读模式
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import java.util.List;
import javax.imageio.*;
import javax.imageio.stream.*;
import javax.swing.*;

public class ImageIOTest{
        public static void main(String args[]){
               
                ImageIOTest panel = new ImageIOTest();
       
                }
       
        }
        class panel extends JPanel{
                public panel(){
                        JFrame frame = new JFrame();
                  frame.setTitle("态势显示");
                  frame.setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
                  setBounds(100,100,700,600);
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        frame.add(this);
                  frame.setVisible(true);       
                  
                        JMenu fileMenu = new JMenu("文件");
                        JMenuItem openItem = new JMenuItem("打开");
                        openItem.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent event){
                                        openFile();
                                        }
                                });
                                fileMenu.add(openItem);
                               
                                JMenu saveMenu = new JMenu("保存为");
                                fileMenu.add(saveMenu);
                                Iterator <String> iter = writerFormats.iterator();
                                while(iter.hasNext()){
                                        final String formatName = iter.next();
                                        JMenuItem formatItem = new JMenuItem(formatName);
                                        saveMenu.add(formatItem);
                                        formatItem.addActionListener(new ActionListener(){
                                                public void actionPerformed(ActionEvent event){
                                                        saveFile(formatName);
                                                        }
                                                });
                                        }
                                        JMenuItem exitItem = new JMenuItem("退出");
          exitItem.addActionListener(new ActionListener(){
                  public void actionPerformed(ActionEvent event){
                          System.exit(0);
                          }
                  });
                  fileMenu.add(exitItem);
                 
                  JMenuBar menuBar = new JMenuBar();
                  menuBar.add(fileMenu);
                  frame.setJMenuBar(menuBar);
                        }
                        public void openFile(){
                                JFileChooser chooser = new JFileChooser();
                                chooser.setCurrentDirectory(new File("."));
                               
                                chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){
                                        public boolean accept(File f){
                                                if(f.isDirectory())   return true;
                                                String name = f.getName();
                                                int p = name.lastIndexOf('.');                                               
                                                if(p==-1) return false;
                                                String suffix = name.substring(p+1).toLowerCase();
                                                return readerSuffixes.contains(suffix);
                                        }
                                        public String getDescription(){
                                                return "Image files";
                                                }
                                        });
                                        int r= chooser.showOpenDialog(this);
                                        if(r!=JFileChooser.APPROVE_OPTION)  return;
                                        File f = chooser.getSelectedFile();
                                        Box box = Box.createVerticalBox();
                                        try{
                                                String name = f.getName();
                                                String suffix = name.substring(name.lastIndexOf('.')+1);
                                                Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);
                                                ImageReader reader = iter.next();
                                                ImageInputStream imageIn = ImageIO.createImageInputStream(f);
                                                reader.setInput(imageIn);
                                                int count = reader.getNumImages(true);
                                                images = new BufferedImage[count];
                                                for(int i = 0;i<count;i++){
                                                        images[i] = reader.read(i);
                                                        box.add(new JLabel(new ImageIcon(images[i])));
                                                        }
                                                }
                                                catch(IOException e){
                                                        JOptionPane.showMessageDialog(this,e);
                                                        }
                                                        setContentPane(new JScrollPane(box));
                                                        validate();
                                }
                                public void saveFile(final String formatName){
                                        if(images==null) return;
                                        Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(formatName);
                                        ImageWriter writer = iter.next();
                                        final List<String> writerSuffixes = Arrays.asList(writer.getOriginatingProvider().getFileSuffixes());
                                        JFileChooser chooser = new JFileChooser();
                                        chooser.setCurrentDirectory(new File("."));
                                       
                                        chooser.setFileFilter(new javax.swing.filechooser.FileFilter(){
                                                public boolean accept(File f){
                                                        if(f.isDirectory()) return true;
                                                        String name = f.getName();
                                                        int p = name.lastIndexOf('.');
                                                        if(p==-1) return false;
                                                String suffix = name.substring(p+1).toLowerCase();
                                                return readerSuffixes.contains(suffix);
                                                        }
                                                        public String getDescription(){
                                                                return formatName+"files";
                                                                }
                                                });
                                                int r= chooser.showOpenDialog(this);
                                        if(r!=JFileChooser.APPROVE_OPTION)  return;
                                        File f = chooser.getSelectedFile();
                                        try{
                                                ImageOutputStream imageOut = ImageIO.createImageOutputStream(f);
                                                writer.setOutput(imageOut);
                                               
                                                writer.write(new IIOImage(images[0],null,null));
                                                for(int i=1;i<images.length;i++){
                                                        IIOImage iioImage = new IIOImage(images[i],null,null);
                                                        if(writer.canInsertImage(i))
                                                                writer.writeInsert(i,iioImage,null);
                                                               
                                                        }
                                                }
                                                catch(IOException e){
                                                          JOptionPane.showMessageDialog(this,e);
                                                        }
                                        }
                                        public static Set<String>  getReaderSuffixes(){
                                                TreeSet<String> readerSuffixes = new TreeSet<String>();
                                                for(String name:ImageIO.getReaderFormatNames()){
                                                        Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName(name);
                                                        while(iter.hasNext()){
                                                                ImageReader reader = iter.next();
                                                                String[] s = reader.getOriginatingProvider().getFileSuffixes();
                                                                readerSuffixes.addAll(Arrays.asList(s));
                                                               
                                                                }
                                                        }
                                                        return readerSuffixes;
                                                }
                                                public static Set<String> getWriterFormats(){
                                                        TreeSet<String> writerFormats = new TreeSet<String>();
                                                        TreeSet<String> formatNames = new TreeSet<String>(Arrays.asList(ImageIO.getWriterFormatNames()));
                                                        while(formatNames.size()>0){
                                                                String name = formatNames.iterator().next();
                                                                Iterator<ImageWriter>  iter = ImageIO.getImageWritersByFormatName(name);
                                                                ImageWriter writer = iter.next();
                                                                String[] names = writer.getOriginatingProvider().getFormatNames();
                                                                writerFormats.add(names[0]);
                                                                formatNames.removeAll(Arrays.asList(names));
                                                                }
                                                                return writerFormats;
                                                        }
                                                        private BufferedImage[] images;
                                                        private static final int DEFAULT_WIDTH = 1000;
                                                        private static final int DEFAULT_HEIGHT = 800;
                                                        private static Set<String> readerSuffixes = getReaderSuffixes();
                                                        private static Set<String> writerFormats = getWriterFormats();
                                                       
                }
您需要登录后才可以回帖 登录 | 建立账号

本版积分规则

 
QQ在线咨询

QQ|小黑屋|手机版|Archiver|美河学习在线 ( 浙网备33020302000026号 )

GMT+8, 2025-4-4 14:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表