Arraylist JavaFX中的集合
有人能告诉我如何在应用程序运行期间维护数组列表中的数据吗。假设我们有三节课。主类运行应用程序,并按“保存”按钮将数据添加到第二个类中,其中声明为私有数组列表。然后,当我们在数组列表中添加数据时,我们单击“下一个场景”按钮。当打开第二级即第三级时,会出现“显示”按钮,该按钮应显示添加到第一级中的数据,但它抛出了数组列表为空的错误 代码: 头等舱Arraylist JavaFX中的集合,arraylist,collections,javafx,Arraylist,Collections,Javafx,有人能告诉我如何在应用程序运行期间维护数组列表中的数据吗。假设我们有三节课。主类运行应用程序,并按“保存”按钮将数据添加到第二个类中,其中声明为私有数组列表。然后,当我们在数组列表中添加数据时,我们单击“下一个场景”按钮。当打开第二级即第三级时,会出现“显示”按钮,该按钮应显示添加到第一级中的数据,但它抛出了数组列表为空的错误 代码: 头等舱 public void start(Stage primaryStage) { final Button btn = new Button
public void start(Stage primaryStage) {
final Button btn = new Button();
btn.setLayoutX(121);
btn.setLayoutY(125);
btn.setText("Save");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
array.insert(20);
}
});
final Button btn_next = new Button();
btn_next.setLayoutX(btn.getLayoutY());
btn_next.setLayoutY(btn.getLayoutX() + 54);
btn_next.setText("Next Scene");
btn_next.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
secondStage.start();
}
});
Pane root = new Pane();
root.getChildren().add(btn);
root.getChildren().add(btn_next);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Exercise");
primaryStage.setScene(scene);
primaryStage.show();
}
你能展示足够的代码让别人帮你吗?例如,在“第一类”中,变量
array
和secondStage
在哪里声明和初始化?您secondStage
类创建了ArrayListClass
的新实例。您确定在第一个类中使用相同的实例吗?否则,SecondStage
中的数组将始终基本为空,您在SecondStage
中创建的数组中绝不会添加任何内容。您只向“第一类”中创建的数据添加数据。我假设您只想在其他两个类之间共享ArrayListClass
的一个实例,但是如果没有相关的代码,就很难给出完全有用的答案。是的,这就是我的意思。在两个或多个类之间共享数据,但我不知道如何访问它。或者将ArrayListClass作为静态类,这可能是解决方案?
public class ArrayListClass {
private ArrayList <Integer> array = new ArrayList<>();
private ObservableList name_obs = FXCollections.observableArrayList(array);
public void insert(int maxBound) {
for(int i = 0; i < maxBound; i++) {
name_obs.add(i);
}
}
public Integer show(int i) {
return (Integer) name_obs.get(i);
}
}
public class SecondStage {
private Stage secondaryStage = new Stage();
ArrayListClass array = new ArrayListClass();
public void start() {
Button btn= new Button();
btn.setText("Show");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println(array.show(5));
}
}
);
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
secondaryStage.setTitle("Exercise");
secondaryStage.setScene(scene);
secondaryStage.show();
}
}
Executing /Users/Jenda/NetBeansProjects/ExerciseArrayList/dist/run542796410/ExerciseArrayList.jar using platform /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/bin/java
Exception in thread "JavaFX Application Thread" java.lang.IndexOutOfBoundsException: Index: 5, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrapper.java:89)
at exercisearraylist.ArrayListClass.show(ArrayListClass.java:36)
at exercisearraylist.SecondStage$1.handle(SecondStage.java:36)
at exercisearraylist.SecondStage$1.handle(SecondStage.java:31)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8216)
at javafx.scene.control.Button.fire(Button.java:185)