我对Java编程/JavaFX非常陌生,正在尝试创建一个接受名字、姓氏、年龄输入的程序。将其打印到JavaFX中的observablelist->tableview中。然后我得到了一个arraylist,它接受observablelist并将其打印到XML。但是得到错误消息java.lang.IllegalAccessException:Class sun.reflect.misc.trampoline不能访问带有修饰符“”continuence...java.lang.Exception:Xmlencoder:discarding语句arraylist.add(Person)的类sample.Person的成员;继续...
但是我的Person类是公共的,我可以在控制台中输出一切。
package sample;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.stage.WindowEvent;
import java.beans.XMLEncoder;
import java.io.*;
import java.util.ArrayList;
public class Main extends Application {
Person person;
ArrayList<Person> aList = new ArrayList<>();
ObservableList<Person> obList = FXCollections.observableList(aList);
@Override
public void start(Stage primaryStage) {
//Create main gridpane.
GridPane gridpane = new GridPane();
primaryStage.setScene(new Scene(gridpane, 500, 500));
primaryStage.show();
//Create textfields/labels.
Label fNameLabel = new Label("First name:");
GridPane.setConstraints(fNameLabel, 0, 0);
fNameLabel.setMinWidth(150);
TextField fNameInput = new TextField();
fNameInput.setPromptText("Input first name...");
GridPane.setConstraints(fNameInput, 1, 0);
Label lNameLabel = new Label("Last name: ");
GridPane.setConstraints(lNameLabel, 0, 1);
TextField lNameInput = new TextField();
lNameInput.setPromptText("Input last name...");
GridPane.setConstraints(lNameInput, 1, 1);
Label ageLabel = new Label("Age: ");
GridPane.setConstraints(ageLabel, 0, 2);
TextField ageInput = new TextField();
ageInput.setPromptText("Input age...");
GridPane.setConstraints(ageInput, 1, 2);
//Adds tableview.
TableView<Person> tableView = new TableView<Person>();
tableView.setItems(obList);
TableColumn<Person, String> fNameTable = new TableColumn<Person, String>("First Name");
fNameTable.setCellValueFactory(new PropertyValueFactory<Person, String>("firstName"));
TableColumn<Person, String> lNameTable = new TableColumn<Person, String>("Last Name");
lNameTable.setCellValueFactory(new PropertyValueFactory<Person, String>("lastName"));
TableColumn<Person, String> ageTable = new TableColumn<Person, String>("Age");
ageTable.setCellValueFactory(new PropertyValueFactory<Person, String>("age"));
fNameTable.setMinWidth(200);
lNameTable.setMinWidth(200);
ageTable.setMinWidth(100);
ColumnConstraints column1 = new ColumnConstraints();
ColumnConstraints column2 = new ColumnConstraints();
ColumnConstraints column3 = new ColumnConstraints();
column1.setPercentWidth(33);
column2.setPercentWidth(33);
column3.setPercentWidth(33);
gridpane.getColumnConstraints().addAll(column1, column2, column3);
tableView.getColumns().addAll(fNameTable, lNameTable, ageTable);
// Adds the addbutton and creates a person with the chosen name/age.
Button addButton = new Button("Add");
GridPane.setConstraints(addButton, 1, 3);
addButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
obList.add(new Person(fNameInput.getText(), lNameInput.getText(), ageInput.getText()));
tableView.setItems(obList);
tableView.refresh();
fNameInput.clear();
lNameInput.clear();
ageInput.clear();
}
});
Button xmlButton = new Button("XML");
GridPane.setConstraints(xmlButton, 0, 3);
xmlButton.setOnAction(new EventHandler<ActionEvent>(){
public void handle(ActionEvent event) {
write();
}
});
//Add everthing to gridpane.
gridpane.add(tableView, 0, 4, 3, 2);
gridpane.getChildren().addAll(fNameInput, addButton, fNameLabel, lNameInput, lNameLabel, ageLabel, ageInput, xmlButton);
//What to do when user exits.
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
System.out.println("Du stängde");
System.out.println(obList.size());
write();
Platform.exit();
System.exit(0);
}
});
}
public void write() {
XMLEncoder x = null;
try {
x = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("test.xml")));
System.out.println("Printar till XML");
System.out.println(aList.size()+" alist storlek");
for(int i = 0; i < aList.size(); i++) {
System.out.println(aList.get(i).getFirstName() + aList.get(i).getLastName() + aList.get(i).getAge());
}
x.writeObject(aList);
x.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
和我的个人类。
package sample;
import java.io.Serializable;
public class Person implements Serializable {
public String firstName;
public String lastName;
public String age;
Person() {
}
Person(String firstName, String lastName, String age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
您的构造函数不是公共的,因此XMLEncoder无法访问它们。将它们更改为:
public Person()
public Person(String firstName, String lastName, String age)
我试图用docker运行一个简单的命令,读取我的主目录中的文件,并在本地机器上的同一目录中写入输出文件(
我试图在android中写入文件,但一直出现以下错误: java.io.FileNotFoundException: /storage/emulated/0/Notes/TestFile.txt(权限拒绝) 搜索此网站可以简单地解决此问题,即向应用程序清单文件添加WRITE\u EXTERNAL\u存储,但这对我不起作用。我一直在犯同样的错误。
问题内容: 我正在尝试使用Python在Windows OS上创建并写入一个临时文件。我已经使用Python模块创建了一个临时文件。 但是当我去写那个临时文件的时候我得到了一个错误。我不可以写临时文件吗?难道我做错了什么?如果要创建并写入临时文件,应该如何在Python中进行操作?为了安全起见,我想在temp目录中创建一个临时文件,而不是在本地(在.exe正在执行的目录中)中创建一个临时文件。 问
同时运行docker的服务 YML文件: DockerFile: 来自rabbitmq:3-management-alpine 抄袭/配置/ampq/devhost 我使用了这个命令:docker-compose-fdocker-compose.yml--build ampq 请帮我解决这个问题
正如您从标题中注意到的,我在Android中将文件写入SD卡时遇到了问题。我检查了这个问题,但它对我没有帮助。我想在SD卡上的公共空间中编写文件,以便任何其他应用程序都可以读取它。 首先,我检查SD卡是否已安装: 然后,我运行以下代码: 我有: 在我的AndroidManifest中。xml。 确切的错误是: 我正在模拟器上测试我的代码(模拟Nexus5 API 23)。我所需的最低SDK版本是1
我试图在txt文件中写入从html表单获取的数据,但出现以下错误:警告:fopen(/var/www/4/datos.txt):无法打开流:在/var/www/4/comprobacionformulaio中的权限被拒绝。php第13行警告:fwrite()希望参数1是资源,布尔值在/var/www/4/comprobacionformulaio中给出。php第16行警告:fclose()希望参数