questo è il JFC richiamato da un JFrame:
codice:
public class FileChooserCapture extends JFrame {
private File file = null;
public void salva() throws AWTException, IOException {
JFileChooser fc = new JFileChooser();
FileFilter jpegFilter = new FileNameExtensionFilter("File JPG/JPEG", "jpeg");
FileFilter gifFilter = new FileNameExtensionFilter("File GIF", "gif");
FileFilter pngFilter = new FileNameExtensionFilter("File PNG", "png");
fc.addChoosableFileFilter(gifFilter);
fc.addChoosableFileFilter(pngFilter);
fc.addChoosableFileFilter(jpegFilter);
int returnVal = fc.showSaveDialog(fc);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fc.getSelectedFile();
FileFilter selectedFilter = fc.getFileFilter();
if (file.getName().indexOf('.') == -1) {
if (selectedFilter == jpegFilter) {
file = new File(file.getPath() + ".jpeg");
} else if (selectedFilter == gifFilter) {
file = new File(file.getPath() + ".gif");
} else if (selectedFilter == pngFilter) {
file = new File(file.getPath() + ".png");
}
}
if (file.exists()) {
String msg = MessageFormat.format("The entry ''{0}'' already exists.\nDo you want to replace it?", new Object[]{file});
int r = JOptionPane.showConfirmDialog(null, msg, "Confirm", JOptionPane.YES_NO_OPTION);
if (r == JOptionPane.NO_OPTION) {
return;
}
}
// nascondere jfc
Thread.sleep(1000);
if (Screen.getRadioManual().isSelected()) {
int x = Integer.parseInt(Screen.getTxtX().getText());
int y = Integer.parseInt(Screen.getTxtY().getText());
int w = Integer.parseInt(Screen.getTxtW().getText());
int h = Integer.parseInt(Screen.getTxtH().getText());
TakeScreen.manualScreen(formato(), file.toString(), x, y, w, h);
} else {
TakeScreen.autoScreen(formato(), file.toString());
}
}
}
public String formato() {
String ext = file.toString();
String formato = ext.substring(ext.lastIndexOf(".") + 1);
return formato;
}
}
in pratica un classico JFC con flitri che imposta percorso e nome di salvataggio di un file.
dopo di che il programma continua scattando una foto del desktop salvando il file prendendolo dal JFC.
il problema è che nella finestra rientra anche il JFC e nn dovrebbe.
per ovviare per ora ho impostato uno sleep, ma c'è un modo migliore per nascondoere il JFC dopo aver scelto dove salvare il file??