我正在使用java.awt.FileDialog创建一个用于保存文件的对话框.问题是,当我指定建议的(默认)文件名时,FileDialog会剥离其扩展名.例:
import java.awt.*;
import java.io.*;
public class SaveFile {
public static void main(String[] args) {
FileDialog fileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);
fileDialog.setFilenameFilter(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
fileDialog.setFile("Untitled.txt");
fileDialog.setVisible(true);
System.out.println("File: " + fileDialog.getFile());
}
}
Run Code Online (Sandbox Code Playgroud)
我希望当FileDialog出现时,默认文件名是"Untitled.txt",而只是"Untitled".当用户单击"保存"时,我会返回没有扩展名的文件名.FileDialog在Windows和OS X上执行此操作.
我不明白.为什么FileDialog故意剥夺扩展名?这有什么合理的理由吗?文档没有讨论它.作为一种解决方法,我可以简单地将扩展名添加到FileDialog返回的字符串中,但是,这似乎是一个错误......
(请注意,我不能使用JFileChooser;我需要本机AWT FileDialog.)
我有一些代码使用Object.clone执行深层复制,但我正在尝试使用更"可接受"的复制构造函数重写它.下面是我正在尝试做的两个简单示例,第一个使用克隆,第二个使用复制构造函数.
使用克隆的深层复制
import java.util.*;
abstract class Person implements Cloneable {
String name;
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
class Teacher extends Person implements Cloneable {
int courses;
public String toString() { return name + ": courses=" + courses; }
}
class Student extends Person implements Cloneable {
double gpa;
public String toString() { return name + ": gpa=" + gpa; }
}
public class DeepCopy_Clone {
private static List<Person> deepCopy(List<Person> people) throws CloneNotSupportedException {
List<Person> copy …Run Code Online (Sandbox Code Playgroud) 在OpenCL中,内置函数isequal,isnotequal,isgreater等有什么意义?为什么不==,!=,>等?语义是否不同?操作员是否有功能不受限制的限制?规格尚不清楚......