Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过不同帧进行操作处理_Java_Swing_Action - Fatal编程技术网

Java 通过不同帧进行操作处理

Java 通过不同帧进行操作处理,java,swing,action,Java,Swing,Action,我有一个看似基本的设计问题,但我正在努力找到一个合适的解决方案,因为我在OO设计方面没有太多经验 我有一个系统,它有很多框架,用户需要在其中识别企业/公司。一种方法是点击按钮,打开第二个框架,用户可以选择公司。选择后,公司代码和名称应在原始框架的文本字段中初始化 我认为在需要公司标识的每一帧中复制动作代码不是一个好的设计选择。尽管如此,我还是不知道如何在不引用触发动作的框架的情况下创建单个ActionListener(或javax.swing.Action),因为我无法初始化文本字段(或者我会吗

我有一个看似基本的设计问题,但我正在努力找到一个合适的解决方案,因为我在OO设计方面没有太多经验

我有一个系统,它有很多框架,用户需要在其中识别企业/公司。一种方法是点击按钮,打开第二个框架,用户可以选择公司。选择后,公司代码和名称应在原始框架的文本字段中初始化

我认为在需要公司标识的每一帧中复制动作代码不是一个好的设计选择。尽管如此,我还是不知道如何在不引用触发动作的框架的情况下创建单个
ActionListener
(或
javax.swing.Action
),因为我无法初始化文本字段(或者我会吗?)

我的第一个想法是为所有需要搜索服务的框架实现一个公共接口,使用一个方法,比如
setCorporation(Corporation Corporation)
。这样,当我创建一个
ActionListener
时,我会传递一个实现接口的框架实例的引用

问题是这个解决方案会创建双重引用(
addActionListener(newSearchAction(this))
),我必须为每个问题实现一个类似的接口(比如搜索客户端)


解决此类问题的最佳方法是什么?

您的系统应使用一个且仅使用一个JFrame。在JFrame中可以有多个JPanel。您还可以使用JDialogs或JOptionPanes来收集其他信息。阅读Oracle的GUI创建指南。Gilbert Le Blanc,谢谢你花时间帮助我,我真的很感激。无论如何,这是一个复杂的企业管理系统,应该有很多形式。它当然可以用一个框架和很多很多内部框架来完成。但我认为这个问题仍然存在。我需要在不同的内部框架、面板或类似的东西上初始化文本字段。有许多完全不同的进程需要这些信息,您可以创建一个GUI数据模型来保存在各种JPanel和JDialog中处理的信息。这个数据模型的实例被传递给所有的GUI视图类。当你说一个数据模型时,你的意思是初始化公司一次,然后把它传递给所有应该显示它的内部框架?如果是这样,我需要为每个内部框架标识公司,因为用户可以为一家公司创建一个文档,关闭内部框架,然后在另一个内部框架上为另一家公司创建一个应付账款。根据您的评论,GUI数据模型将具有公司、文档和应付账款的类。GUI可以生成的任何内容都需要存储在数据模型中。