62,614
社区成员
发帖
与我相关
我的任务
分享
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"*.jpg,*.png,*.bmp,*.tiff", "jpg", "png", "bmp", "tiff");
jFileChooser1.setFileFilter(filter);
if (JFileChooser.APPROVE_OPTION == jFileChooser1.showOpenDialog(this))
jPanel1 = new PaintImage();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"*.jpg,*.png,*.bmp,*.tiff", "jpg", "png", "bmp", "tiff", "tif");
jFileChooser1.setFileFilter(filter);
int result = jFileChooser1.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
file = jFileChooser1.getSelectedFile();
((PaintImage) jPanel1).setImageFile(file);
}
PaintImage.java:
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ImageProducer;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class PaintImage extends JPanel {
protected File imgFile;
protected Image image;
protected BufferedImage buffimg;
protected ImageIcon img;
public PaintImage(){
super();
addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent e){
repaint();
}
});
}
public File getImageFile(){
return imgFile;
}
public void setImageFile(File newImgFile){
try {
imgFile = newImgFile;
buffimg = ImageIO.read(imgFile);
ImageProducer producer = buffimg.getSource();
Toolkit toolkit = Toolkit.getDefaultToolkit();
image = toolkit.createImage(producer);
ImageIcon newImg = new ImageIcon(image);
setImage(newImg);
}catch (IOException e) {
e.printStackTrace();
}
}
public void setImage(ImageIcon newImg){
img = newImg;
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
if(img != null){
Util.paintImg(this, g, img);
}
}
}
Util.java:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.SwingUtilities;
import javax.swing.ImageIcon;
public class Util
{
public static void createAndShowGUI(JComponent c, JMenuBar b)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle(c.getClass().getName().replaceAll("\\w+\\.",""));
f.setJMenuBar(b);
f.getContentPane().add(c);
f.pack();
f.setVisible(true);
f.setLocationRelativeTo(null);
}
public static void run(final JComponent c, final JMenuBar b)
{
SwingUtilities.invokeLater(new Runnable(){
public void run()
{
createAndShowGUI(c, b);
}
});
}
public static void paintImg(JComponent c, Graphics g, ImageIcon img)
{
paintImg(c, g, img, c.getWidth(), c.getHeight());
}
public static void paintImg(JComponent c, Graphics g, ImageIcon img, int x, int y)
{
int X = x-x/10;
int Y = y-y/10;
ImageIcon imgX, imgXY;
if(img.getIconWidth()>X){
imgX = new ImageIcon(img.getImage().getScaledInstance(X, -1, Image.SCALE_SMOOTH));
}
else{
imgX = img;
}
if(imgX.getIconHeight()>Y){
imgXY = new ImageIcon(imgX.getImage().getScaledInstance(-1, Y, Image.SCALE_SMOOTH));
}
else{
imgXY = imgX;
}
imgXY.paintIcon(c, g, x/2-imgXY.getIconWidth()/2, y/2-imgXY.getIconHeight()/2);
}
}
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class HelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
JFrame frame = new ImageViewerFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class ImageViewerFrame extends JFrame{
public ImageViewerFrame(){
setTitle("ImageViewer");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
label = new JLabel();
add(label);
chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
JMenuBar menubar = new JMenuBar();
setJMenuBar(menubar);
JMenu menu = new JMenu("File");
menubar.add(menu);
JMenuItem openItem = new JMenuItem("Open");
menu.add(openItem);
JMenuItem exitItem = new JMenuItem("Close");
menu.add(exitItem);
openItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int result = chooser.showOpenDialog(null);
if(result == JFileChooser.APPROVE_OPTION){
String name = chooser.getSelectedFile().getPath();
label.setIcon(new ImageIcon(name));
}
}
});
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
}
});
}
private JLabel label;
private JFileChooser chooser;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 400;
}
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* @author zys59三仙半(QQ:597882752) 创建时间:2015年5月13日 上午8:32:17
*/
public class TestFileChooser extends JFrame implements ActionListener {
public static void main(String[] args) {
new TestFileChooser().setVisible(true);
}
private JButton btn;
private MyPanel1 panel;
public TestFileChooser() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 400);
this.setLocation(100, 100);
this.setResizable(false);
this.setLayout(null);
btn = new JButton("打开");
btn.setSize(75, 30);
btn.setLocation(10, 10);
btn.addActionListener(this);
add(btn);
panel = new MyPanel1();
panel.setLocation(10, 50);
panel.setSize(470, 310);
add(panel);
}
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("图片文件", "jpg", "png", "bmp");
chooser.setFileFilter(filter);
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
File picFile = chooser.getSelectedFile();
//选择图片后,让面板显示图片
panel.setImage(picFile);
}
}
}
//此类用于显示选中的图片
class MyPanel extends JPanel {
private BufferedImage img = null;
//这个方法被外部调用,设置新图片
public void setImage(File picFile) {
try {
//载入图片
img = ImageIO.read(picFile);
//新图片载入完毕,申请重绘
repaint();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void paint(Graphics g) {
//擦除原来的图片
g.clearRect(0, 0, this.getWidth(), this.getHeight());
// 根据比例绘制图片
if (img != null) {
//drawImage()有若干重载,根据需要选用,当前这种用法,是让新载入的图片适应Panel的尺寸
g.drawImage(img, 0, 0, this.getWidth() - 1, this.getHeight() - 1,
0, 0, img.getWidth() - 1, img.getHeight() - 1, this);
}
}
}