📄 imageview.java
字号:
/*
* Created on 2004-3-13
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;
public class ImageView {
public static void main(String args[]) {
ImageViewerFrame frame=new ImageViewerFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ImageViewerFrame extends JFrame {
JLabel label;
JFileChooser chooser;
int dWIDTH=300;
int dHEIGHT=400;
AboutDialog dialog;
public ImageViewerFrame() {
setTitle("ImageViewer");
setSize(dWIDTH,dHEIGHT);
JMenuBar menuBar=new JMenuBar();
setJMenuBar(menuBar);
JMenu menu=new JMenu("File");
menuBar.add(menu);
JPanel myPanel=new JPanel();
Container contentPane=getContentPane();
contentPane.add(myPanel);
myPanel.setBackground(Color.yellow);
//用一个LABEL来显示图片
label = new JLabel();
myPanel.add(label);
chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
//accept all image files ending with .jpg .jpeg .gif
final ExtensionFileFilter filter=new ExtensionFileFilter();
filter.addExtension("jpg");
filter.addExtension("jpeg");
filter.addExtension("gif");
filter.setDescription("Image files");
chooser.setFileFilter(filter);
chooser.setAccessory(new ImagePreviewer(chooser));
JMenuItem openItem=new JMenuItem("Open");
menu.add(openItem);
openItem.addActionListener(new
ActionListener() {
public void actionPerformed(ActionEvent e){
int r=chooser.showOpenDialog(null);
//if file selected,set it as icon of the label
if(r==JFileChooser.APPROVE_OPTION)
{
String name=chooser.getSelectedFile().getPath();
ImageIcon im=new ImageIcon(name);
im.getImage().getScaledInstance(im.getIconWidth()*2,im.getIconHeight()*2,Image.SCALE_DEFAULT);
label.setIcon(im);
}
}
}
);
JMenuItem exitItem=new JMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener(new
ActionListener() {
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
JMenuItem aboutItem=new JMenuItem("About");
menu.add(aboutItem);
aboutItem.addActionListener(new
ActionListener() {
public void actionPerformed(ActionEvent e){
if(dialog==null) //first run
dialog=new AboutDialog(ImageViewerFrame.this);
dialog.show();
}
}
);
}
}
class ExtensionFileFilter extends FileFilter {
public void addExtension(String extension) {
if(!extension.startsWith("."))
extension="."+extension;
extensions.add(extension.toLowerCase());
}
public void setDescription(String aDes) {
description=aDes;
}
public String getDescription(){
return description;
}
public boolean accept(File f) {
if(f.isDirectory()) return true;
String name =f.getName().toLowerCase();
for(int i=0;i<extensions.size();i++)
if(name.endsWith((String)extensions.get(i)))
return true;
return false;
}
private String description="";
private ArrayList extensions=new ArrayList();
}
class FileIconView extends FileView {
private FileFilter filter;
private Icon icon;
public Icon getIcon(File f) {
if(!f.isDirectory()&&filter.accept(f))
return icon;
else return null;
}
}
class ImagePreviewer extends JLabel {
public ImagePreviewer(JFileChooser chooser) {
setPreferredSize(new Dimension(100,100));
setBorder(BorderFactory.createEtchedBorder());
chooser.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event){
if(event.getPropertyName() == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) {
File f=(File)event.getNewValue();
ImageIcon icon=new ImageIcon(f.getPath());
if(icon.getIconWidth() >getWidth())
icon= new ImageIcon(icon.getImage().getScaledInstance(getWidth(),-1,Image.SCALE_DEFAULT));
setIcon(icon);
}
}
});
}
}
class AboutDialog extends JDialog {
public AboutDialog(JFrame owner) {
super(owner,"About Dialog",true);
Container contentPane=getContentPane();
//add HTML label to center
contentPane.add(new JLabel("<HTML><H1><I>FileOperator</I></H1><HR>"
+" Made By Song !<HTML>"),BorderLayout.CENTER );
JButton ok=new JButton("OK");
ok.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setVisible(false);
}
});
JPanel panel=new JPanel();
panel.add(ok);
contentPane.add(panel,BorderLayout.SOUTH);
setSize(250,150);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -