【问题标题】:Retrieve object from a Java Swing component从 Java Swing 组件中检索对象
【发布时间】:2012-03-31 20:25:51
【问题描述】:

我一直在从事 Java Swing 项目,我需要检索创建面板的对象/实例,以便调用特定于该实例的简单保存方法。

您有一个带有 JTabbedPane 的 JFrame,该 JFrame 具有通过实例化构建 JPanel 并将其添加到 JTabbedPane 的类创建的选项卡,我需要从 JTabbedPane 上选定的 JPanel/选项卡中找到特定实例,然后调用它的保存方法。

有什么想法吗? 感谢您的宝贵时间!

public class frame extends JFrame implements ActionListener{
 Builds a frame dubbed "frame" that is static.
 Builds a static JTabbedPane dubbed "pane"and adds it to the frame.
 Creates a button that creates a new instance of sheet.

 public void actionPerformed(MAGIC!){
  See if a button on the panel has been pressed and uses the currently selected tab to locate the correct instance of sheet to run it's save method.
 }
}

public class sheet extends JPanel{
 In constructor makes a JPanel and adds it to "pane"

 Describes a save method that outputs a variable unique to the instance.
}

【问题讨论】:

  • 我认为,为了获得最佳的具体帮助,您需要告诉我们您当前代码的更多详细信息。您是否使用代码生成软件来创建 GUI,例如 NetBean 的 gui creator?
  • 不,我正在手工制作,以便更好地了解 Java 和 Swing。

标签: java swing


【解决方案1】:

我发现我需要做的就是将新的选项卡对象存储在 ArrayList derp 中。感谢你们的尝试!

【讨论】:

  • 恭喜修复!如果有能力,请确保将您的答案标记为“已接受”,以便其他人可以从您的成功中学习。干杯~
  • 哦,在此之前,我需要说这个问题是由滥用类扩展引起的。当你扩展一个类时,它本身就成为你扩展的对象,这意味着你可以——在我的例子中——从中运行保存命令。引用类本身时,请记住“this”关键字!
【解决方案2】:

我的方法不是仅仅连接回原始创建者,而是创建/使用一个明确支持保存的界面。我在 TUS 中为此创建了一些东西,我的 sourceforge 项目

http://tus.svn.sourceforge.net/viewvc/tus/tjacobs/io/filepersist/

查看 Persistable 和 Persistable2。当然,任何东西都可以是 Persistable,但抽象让您摆脱与创建者类的显式联系

【讨论】:

  • 我可以试试这个,但我怕我不是最熟练的接口>
【解决方案3】:

您可以在指向创建者实例的新 JPanel 中添加一个字段。我不认为有任何这样的方法可以指向 API 中的父类。

--编辑-- 你可能想检查 http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html getSelectedIndex() 可能就是你要找的。​​p>

【讨论】:

  • 我知道这听起来很愚蠢,但我该怎么做呢?我从来没有直接使用过指针,更不用说在没有典型意义上的指针的语言中了。 >
  • @user1305495:他的意思是简单地给你的 GUI 类一个变量来保存对其创建者的引用,仅此而已。
  • 我认为您的想法有误,我将用一些伪代码更新问题以进一步详细说明,因为以任何其他方式解释让我有点头疼...
  • 亲爱的编辑,恐怕 getSelectedComponent/index 会返回面板。这个问题的重点是看看我是否可以从该面板中获取对象:/ 不过感谢您的努力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
相关资源
最近更新 更多