高手门,帮帮我???
接http://community.csdn.net/Expert/topic/4046/4046024.xml?temp=.675625
下面是改进后的程序,也可在上面的网页回复。
我基本功能已完善了,但是就打开不对,还有旋转有点问题
大家帮我看看,其他不要管,只要看
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
final ExtensionFileFilter filter=new ExtensionFileFilter();
filter.addExtension("jpg");
filter.addExtension("jpeg");
filter.addExtension("gif");
filter.setdescription("Image Files");
chooser.setFileFilter(filter);
int result=chooser.showOpenDialog(dp);
if(result==JFileChooser.APPROVE_OPTION)
{
String name=chooser.getSelectedFile().getPath();
img=Toolkit.getDefaultToolkit().getImage(name);
dp.repaint();
}
}
还有rotate函数,看哪儿有错,对于打开图片,我每次打开图片,panel就显示这张图片,以后的处理就是这张图片。谢谢大家了
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileFilter;
import java.awt.image.*;
import java.awt.geom.AffineTransform;
import java.io.*;
import java.util.ArrayList;
import java.awt.image.ConvolveOp;
import java.awt.Point;
import java.awt.geom.*;
public class ImageViewer extends JFrame
{
private Image img;
private JButton button1,button2,button3,button4,button5,button6,button7,button8;
private JPanel panel;
Container c;
DrawPanel dp;
public boolean start=false;
public int flag=0;
public ImageViewer()
{
super("ImageViewer");
c=getContentPane();
panel=new JPanel();
dp=new DrawPanel();
c.add(dp,BorderLayout.CENTER);
MouseHandler handler=new MouseHandler(dp);
dp.addMouseMotionListener(handler);
dp.addMouseListener(handler);
button1=new JButton("打开");
panel.add(button1);
//dp.img=Toolkit.getDefaultToolkit().getImage("aa.jpg");
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
final ExtensionFileFilter filter=new ExtensionFileFilter();
filter.addExtension("jpg");
filter.addExtension("jpeg");
filter.addExtension("gif");
filter.setdescription("Image Files");
chooser.setFileFilter(filter);
int result=chooser.showOpenDialog(dp);
if(result==JFileChooser.APPROVE_OPTION)
{
String name=chooser.getSelectedFile().getPath();
img=Toolkit.getDefaultToolkit().getImage(name);
dp.repaint();
}
}
});
button2=new JButton("缩放");
panel.add(button2);
button2.addActionListener(new Handler2());
button3=new JButton("翻转");
panel.add(button3);
button3.addActionListener(new Handler3());
button4=new JButton("移动");
panel.add(button4);
button4.addActionListener(new Handler4());
button5=new JButton("还原");
panel.add(button5);
button5.addActionListener(new Handler5());
button6=new JButton("边缘");
panel.add(button6);
button6.addActionListener(new Handler6());
button7=new JButton("画图");
panel.add(button7);
button7.addActionListener(new Handler7());
button8=new JButton("退出");
panel.add(button8);
button8.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
c.add(panel,BorderLayout.SOUTH);
setSize(550,350);
show();
}
private class Handler2 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String str=JOptionPane.showInputDialog(null,"Please input zoom factor","Message",1);
System.out.println(str);
if((str==null)||(str.length()==0))
JOptionPane.showMessageDialog(null,"The data cannot be null","Message",1);
else
dp.zoom(Double.parseDouble(str));
}
}
private class Handler3 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String str=JOptionPane.showInputDialog(null,"Please input flip angle","Message",1);
if((str==null)||(str.length()==0))
JOptionPane.showMessageDialog(null,"The data cannot be null","Message",1);
else
dp.rotate(Integer.parseInt(str));
}
}
private class Handler4 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
dp.flag=3;
}
}
private class Handler5 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
dp.OriginalImage();
}
}
private class Handler6 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
dp.Edge();
}
}
private class Handler7 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
dp.flag=5;
}
}
private static class ExtensionFileFilter extends FileFilter
{
private String description="";
private ArrayList extensions=new ArrayList();
public void addExtension(String extension)
{
if(!extension.startsWith("."))
extension="."+extension;
extensions.add(extension.toLowerCase());
}
public void setdescription(String aDescription)
{
description=aDescription;
}
public String getDescription()
{
return description;
}