单击时,我有一个save
按钮,它将打开一个对话框,我可以选择保存图像的位置。
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.showSaveDialog(null);
String location = chooser.getSelectedFile().toString();
demo.saveImageToLocalDisk(jFrame, location);
}
});
然后,整个JFrame将保存在磁盘的某个位置。代码
private void saveImageToLocalDisk(JFrame panel, String location) {
BufferedImage image = null;
try {
image = new Robot().createScreenCapture(panel.bounds());
} catch (AWTException e1) {
e1.printStackTrace();
}
Graphics2D graphics2D = image.createGraphics();
panel.paint(graphics2D);
try {
ImageIO.write(image, "jpeg", new File(location + "/Graphics.jpeg"));
} catch (Exception e) {
System.out.println("error");
}
}
我也想提供文件名。我该如何实现?
答案 0 :(得分:0)
如果我正确理解了您的问题,则可以替换以下行:
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
与此一起
chooser.setFileFilter(new FileNameExtensionFilter("JPEG-Datei", "jpeg"));
为了只允许选择.jpeg文件并更改此行
ImageIO.write(image, "jpeg", new File(location + "/Graphics.jpeg"));
对此
ImageIO.write(image, "jpeg", new File(location));
此外,您需要添加
if (!location.endsWith(".jpeg")
location += ".jpeg";
在ImageIO.write
命令之前,以便如果用户未在对话框中键入.jpeg扩展名。
目前,您只允许用户在对话框中选择文件夹,而不是文件。如果您进行了上述更改,则用户可以进入他要使用的文件夹并键入“ MyGreatScreenCaptureHaha.jpeg”,或者在JFileChooser
的文件名文本框中末尾保留“ .jpeg”,或者选择一个现有文件要覆盖-就像在MS Word中一样。