Java 如何将.dat文件转换为ObservableList?
我正在尝试将阵列列表转换为可观察列表,我认为我做得对,但除了主窗格外,没有任何东西真正弹出。我希望读取列表中出现的名称的.dat文件,但是当我运行程序时,除了标题和窗口本身之外,什么都不显示。在使用.dat文件显示名称时,我是否遗漏了什么Java 如何将.dat文件转换为ObservableList?,java,listview,arraylist,binaryfiles,observablelist,Java,Listview,Arraylist,Binaryfiles,Observablelist,我正在尝试将阵列列表转换为可观察列表,我认为我做得对,但除了主窗格外,没有任何东西真正弹出。我希望读取列表中出现的名称的.dat文件,但是当我运行程序时,除了标题和窗口本身之外,什么都不显示。在使用.dat文件显示名称时,我是否遗漏了什么 public class PeopleBinary extends Application { private ArrayList<Person> people = new ArrayList<>(); private
public class PeopleBinary extends Application {
private ArrayList<Person> people = new ArrayList<>();
private ObservableList<Person> obserPerson;
public void read() throws Exception {
ObjectInputStream input = new ObjectInputStream(new FileInputStream("people.dat"));
try {
while (input.available() > 0) {
Person temp = (Person) input.readObject();
people.add(temp);
}
input.close();
}
catch (IOException e) {
System.out.println("Problem reading file - File will be terminated.");
System.exit(0);
}
}
public void write() {
try {
ObjectOutputStream peopleBin = new ObjectOutputStream(new FileOutputStream("people.dat"));
for (Person p: obserPerson) {
peopleBin.writeUTF(p.getFirstName());
peopleBin.writeUTF(p.getLastName());
peopleBin.writeUTF(p.getCity());
peopleBin.writeInt(p.getIdNum());
}
peopleBin.close();
}
catch (IOException e) {
System.out.println("Unable to write to file - End of program.");
System.exit(0);
e.printStackTrace();
}
}
@Override
public void start(Stage primaryStage) {
obserPerson = FXCollections.observableArrayList(people);
ListView<Person> perList = new ListView<Person>();
perList.setItems(obserPerson);
perList.setPrefSize(400, 400);
perList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
BorderPane mainPane = new BorderPane();
mainPane.setLeft(new ScrollPane(perList));
Scene scene = new Scene(mainPane, 400, 400);
primaryStage.setTitle("Person Library");
primaryStage.setScene(scene);
primaryStage.show();
}
公共类PeopleBinary扩展应用程序{
private ArrayList people=new ArrayList();
私人观察者观察者;
public void read()引发异常{
ObjectInputStream输入=新ObjectInputStream(新文件输入流(“people.dat”));
试一试{
while(input.available()>0){
Person temp=(Person)input.readObject();
添加(临时);
}
input.close();
}
捕获(IOE异常){
System.out.println(“读取文件时出现问题-文件将被终止”);
系统出口(0);
}
}
公共空写(){
试一试{
ObjectOutputStream peopleBin=新的ObjectOutputStream(新文件输出流(“people.dat”));
对于(人员p:观察者){
peopleBin.writeUTF(p.getFirstName());
peopleBin.writeUTF(p.getLastName());
peopleBin.writeUTF(p.getCity());
peopleBin.writeInt(p.getIdNum());
}
peopleBin.close();
}
捕获(IOE异常){
System.out.println(“无法写入文件-程序结束”);
系统出口(0);
e、 printStackTrace();
}
}
@凌驾
公共无效开始(阶段primaryStage){
obserPerson=FXCollections.observearraylist(人);
ListView perList=新建ListView();
每个列表设置项(观察者);
每个列表的大小(400400);
perList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
BorderPane mainPane=新建BorderPane();
setLeft(新滚动窗格(perList));
场景=新场景(主窗格,400400);
primaryStage.setTitle(“个人库”);
初级阶段。场景(场景);
primaryStage.show();
}