gpt4 book ai didi

Java : reference one form from another form to append values

转载 作者:太空宇宙 更新时间:2023-11-04 15:20:44 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个主窗体,其中包含用于处理其他操作的按钮,例如,我的主窗体显示系统中所有实体的列表,然后用户可以选择然后添加或编辑这些实体应用程序。

当用户按下“添加”时,将打开一个新的 JFrame,允许他们添加到系统中。这一切都很好,但是我遇到了一个影响某些功能的小问题。我编写了一个 CommandTracker,它允许我撤消和重做操作,该库工作正常,但是我很难从其他表单引用我的主表单上的 CommandTracker 对象。 (希望代码能更好地传达我的问题)

主表单声明:

protected CommandTracker;

// This is instantiated in my constructor, trying to show less code to keep simple.
objCommandTracker = new CommandTracker();

这会在我的主窗体中实例化我的新命令跟踪器对象,然后我想从我的子窗体中引用该对象,以便我可以附加在子窗体中触发的下一个命令。

到目前为止,我已尝试通过在子表单 .java 文件中提供对主表单的引用来解决此问题

protected static MainMenu main_menu = null;

然后我尝试按如下方式访问命令跟踪器

// Run AddRequestCommand, through the command tracker
mainMenu.objCommandTracker.executeCommand(addCommand);

但是,这会导致抛出空指针异常,我认为这是因为 mainMenu 在其声明中具有空引用。如何将当前 Activity 的 MainMenu 实例传递到我的子窗体?

最佳答案

使用静态永远不是解决此类问题的方法。解决方案是在需要时传递有效的引用,并对这些引用调用适当的方法。

换句话说,如果一个类需要引用另一个类,那么可以通过参数(构造函数参数或setter方法参数)传入引用,用它来设置字段,然后就可以随意调用方法在该类中的该引用上。

<小时/>

顺便说一句:在其他时候,我们需要讨论向用户拍摄多个 JFrame 的问题,以及您对术语“表单”的非典型使用,就好像它在 Swing 库中具有标准含义一样 - - 事实并非如此,因此您需要使用其他更清晰的术语。

关于Java : reference one form from another form to append values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20415086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com