想要创建JFileChooser
和JTextField
然后从任意文件夹中浏览图片。给出路径,因此它将重命名图像,图像名称将是jtextfield.getText();
,然后存储在指定的路径中。
我知道这很难实现。我做了一些事。
JFileChooser
和jtextfield
已创建。图像存储在我指定的路径中。但它不是重命名图像。 (重命名图像应该是jtextfield.jpg)
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;
public class ImgClass {
public ImgClass() {
final JFrame frame = new JFrame("Save Image");
final JTextField username = new JTextField();
username.setBounds(105, 102, 192, 20);
frame.add(username);
username.setColumns(10);
JButton saveImage = new JButton("Browse");
saveImage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG, GIF, and PNG Images", "jpg", "gif", "png");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = chooser.getSelectedFile();
System.out.println("You choose to open this file: "
+ file.getName());
BufferedImage image;
try {
image = ImageIO.read(file);
ImageIO.write(image, "jpg",new File("D:\\Img\\" + username.getText()+".jpg"));
} catch (IOException ex) {
Logger.getLogger(ImgClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
frame.add(saveImage);
frame.setLayout(new GridBagLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ImgClass saveImageFile = new ImgClass();
}
});
}
}
答案 0 :(得分:3)
您在编写文件时使用相同的文件名。考虑从JTextField获取文本并使用它。
String newName = username.getText();
// no not this!
// File newFile = new File("D:\\Img\\" + file.getName()));
// but this!
file newFile = new File("D:\\Img\\" + newName));
// write with newFile
修改强>
您在评论中说明:
好方法。但问题是:如果我写'' ABC'在jtextfield然后图像将文件格式存储错误。如果我在jtextfield中写abc.jpg那就可以了。如有任何修改,请建议我。
我要求您编写一小段代码,检查字符串(上面名为newName)以查看它是否以".jpg"
或类似".JPG"
之类的内容结尾如果没有,那么为String提供这样的结尾。我有信心你可以解决这个问题。 ;)