简介
最近的好像都没有手敲,只是看了一下。这个是文件管理的
code
/*
* @Author: your name
* @Date: 2020-11-08 15:30:36
* @LastEditTime: 2020-11-08 15:33:06
* @LastEditors: your name
* @Description: In User Settings Edit
* @FilePath: /java/fileChooser/FileChooserTest.java
*/
package fileChooser;
import java.awt.*;
import javax.swing.*;
/**
* @version 1.26 2018-04-10
* @author Cay Horstmann
*/
public class FileChooserTest {
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
var frame = new ImageViewerFrame();
frame.setTitle("FileChooserTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
}
package fileChooser;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;
/**
* A file view that displays an icon for all files that match a file filter.
*/
public class FileIconView extends FileView {
private FileFilter filter;
private Icon icon;
/**
* Constructs a FileIconView.
*
* @param aFilter a file filter--all files that this filter accepts will be
* shown with the icon.
* @param anIcon--the icon shown with all accepted files.
*/
public FileIconView(FileFilter aFilter, Icon anIcon) {
filter = aFilter;
icon = anIcon;
}
public Icon getIcon(File f) {
if (!f.isDirectory() && filter.accept(f))
return icon;
else
return null;
}
}
package fileChooser;
import java.awt.*;
import java.io.*;
import javax.swing.*;
/**
* A file chooser accessory that previews images.
*/
public class ImagePreviewer extends JLabel {
/**
* Constructs an ImagePreviewer.
*
* @param chooser the file chooser whose property changes trigger an image
* change in this previewer
*/
public ImagePreviewer(JFileChooser chooser) {
setPreferredSize(new Dimension(100, 100));
setBorder(BorderFactory.createEtchedBorder());
chooser.addPropertyChangeListener(event -> {
if (event.getPropertyName() == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) {
// the user has selected a new file
File f = (File) event.getNewValue();
if (f == null) {
setIcon(null);
return;
}
// read the image into an icon
var icon = new ImageIcon(f.getPath());
// if the icon is too large to fit, scale it
if (icon.getIconWidth() > getWidth())
icon = new ImageIcon(icon.getImage().getScaledInstance(getWidth(), -1, Image.SCALE_DEFAULT));
setIcon(icon);
}
});
}
}
/*
* @Author: your name
* @Date: 2020-11-08 15:30:36
* @LastEditTime: 2020-11-08 15:33:14
* @LastEditors: your name
* @Description: In User Settings Edit
* @FilePath: /java/fileChooser/ImageViewerFrame.java
*/
package fileChooser;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;
/**
* A frame that has a menu for loading an image and a display area for the
* loaded image.
*/
public class ImageViewerFrame extends JFrame {
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 400;
private JLabel label;
private JFileChooser chooser;
public ImageViewerFrame() {
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// set up menu bar
var menuBar = new JMenuBar();
setJMenuBar(menuBar);
var menu = new JMenu("File");
menuBar.add(menu);
var openItem = new JMenuItem("Open");
menu.add(openItem);
openItem.addActionListener(event -> {
chooser.setCurrentDirectory(new File("."));
// show file chooser dialog
int result = chooser.showOpenDialog(ImageViewerFrame.this);
// if image file accepted, set it as icon of the label
if (result == JFileChooser.APPROVE_OPTION) {
String name = chooser.getSelectedFile().getPath();
label.setIcon(new ImageIcon(name));
pack();
}
});
var exitItem = new JMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener(event -> System.exit(0));
// use a label to display the images
label = new JLabel();
add(label);
// set up file chooser
chooser = new JFileChooser();
// accept all image files ending with .jpg, .jpeg, .gif
var filter = new FileNameExtensionFilter("Image files", "jpg", "jpeg", "gif");
chooser.setFileFilter(filter);
chooser.setAccessory(new ImagePreviewer(chooser));
chooser.setFileView(new FileIconView(filter, new ImageIcon("palette.gif")));
}
}