java - 如何从一个 jframe 访问另一个 jframe 的 arraylist

标签 java swing netbeans arraylist awt

我对 Java 比较陌生。在我的一个项目中,我有三个 jframe。它们是Menuframe,有菜单列表; LoadDatafromExcelframe,用于从Excel文件中选择并读取数据;和 ShowDataFrame,用于显示我在 LoadDatafromExcelframe 中读取的数据。实际上它是一个大项目的一部分。不是整个项目!在我的项目开始时,我正在读取 Excel 文件并加载 arraylist 中的所有数据。到目前为止我很好。现在我想从菜单列表中单击 ShowDataFrame 以显示我在 LoadDatafromExcelframe 中读取的数据。如果我可以访问数组列表,那么我想我可以继续前进。我的问题是“如何从一个 jframe (ShowDataFrame) 访问 arraylist 到另一个框架 (LoadDatafromExcelframe)?”我正在使用 Netbeans IDE。

private void jMenuItemShowDataActionPerformed(java.awt.event.ActionEvent evt) {                                                   
            showDataFrame.setVisible(true);
}

最佳答案

事实上,关键问题与 JFrames 或 Swing 关系不大,而只是将信息从一个对象传递到另一个对象。 Swing 参与的唯一方式是您想要传递此信息以响应某种事件。

解决方案通常是简单地为您的类提供适当的 getter 和 setter 方法,将您的“模型”(程序的逻辑部分)从您的“ View ”(程序的 GUI 部分)中分离出来,并使用某种监听器或观察者类型接口(interface)(例如可以通过 Swing 事件监听器获得),用于在另一个类准备好推送或拉取信息时通知一个类。

更一般的建议:

  • 避免将任何不需要静态的内容设为静态。这是一个快速的解决方案,从长远来看通常会导致更多的痛苦,因为它使您的代码很难在以后增强和测试。
  • 避免使用大量 JFrame。大多数专业 GUI 都只有一个主窗口,如果您愿意的话,也可以称为“JFrame”。通常,最好在该 JFrame 中交换 View ,例如使用 CardLayout 或选项卡式 Pane (如果需要)。需要在另一个窗口中以模式方式获取的信息也可以显示在模式对话框中。
  • 获取一本适用于 Java 编程的 OOP 基础知识的好书,例如 Bruce Eckel's "Thinking in Java"
  • 并获得一本关于在 Java 中使用设计模式的好书,例如 Head First Design Patterns 。这两个概念是 Java 进步的关键。
  • 避免使用代码生成实用程序,例如 NetBean 的表单创建实用程序,因为它会妨碍您学习 Swing 细节,并妨碍您学习创建复杂的 Swing GUI 的能力。当然,一旦您成为 Swing 熟练工,就可以使用这些工具,但在此之前,请使用 Swing 教程来手动学习库和代码。

要获得更具体的建议,您需要提供更多详细信息并提供更多代码。

<小时/>

编辑2

根据您的帖子提供更多建议:

In one of my project I have three jframes. They are Menuframe,that has list of menus; LoadDatafromExcelframe, that is use to select and read data from Excel file; and ShowDataFrame, that is use to display data that I read in LoadDatafromExcelframe.

创建 3 个 JPanel 而不是 3 个 JFrame 看起来可以更好地实现。然后,您可以根据需要在单个 JFrame 中显示 JPanel,使用 CardLayout 来帮助您交换它们。

Actually its part of a big project. not the whole project! At the beginning of my project I am reading Excel file and load all the data in arraylist.

这个 ArrayList 不应该被“读入 JFrame”,而是数据属于非 GUI 类,确切地说是您的“模型”类之一。然后 View 类,您的 GUI 代码可以在必要时向模型询问此数据。阅读本网站上的“模型- View -控制”程序设计,了解有关此有用模式的更多信息。

Till this point I am good. Now I want to click the ShowDataFrame from the menulist to display the data that I have read in the LoadDatafromExcelframe.

这里使用 MVC 结构,“ View ”类之一(保存“菜单列表”的类)应该通知“控制”类,您的代码需要“模型”类保存的 ArrayList 数据。这可以通过让 Control 类保存对“模型”和“ View ”的引用并让“ View ”类保存对控件的引用来完成,从而允许类之间进行通信。

关于java - 如何从一个 jframe 访问另一个 jframe 的 arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295505/

相关文章:

java - 部分项目Intellij中StringBuilder改为java.lang.StringBuilder

java - 如何将垂直 JDialog 大小调整限制为对话框中的单个组件?

java - 查看特定方法的调用堆栈

Java 程序自行删除 - 不工作

java - 添加新行时 JTable 不更新值

eclipse - 如何配置 Firebug 以使用 Eclipse/Netbeans 作为编辑器

java - NetBeans 生成有错误的 JpaController

json - 生成 JSON 时出现 Glassfish 错误

java - 通用 DAO 的缺点?

Java Swing - 如何更改 JPanel 的 TitledBorder 上的字体大小?