有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将数据解析回主面板(java/swing)

设置: 我有一个带有选项卡窗格的主面板,我有一个单独的JPanel“extra”,extra创建一个对象,我希望将该对象传递回主面板,在那里我可以实际使用它/将其添加到数据结构中

框架>;面板>;选项卡窗格>;面板(单独的类,实例化为新对象)

我试图在mainPanel中添加一个侦听器,检查PanelExtra中的布尔值是否发生了变化,然后运行一个方法等,但没有成功

我会在主面板中创建一个方法来接受对象,但我不知道如何引用它。(getRootPane()未返回任何内容)

我也不确定我是否使用了正确的术语,虽然我是在命令行Unix环境中学习Java的,但Swing对我来说是非常陌生的

我尝试了监听器、观察者,目前正在考虑在根目录下创建一个对象,并通过所有对象传递(因为java通过引用传递,我可以将信息传递回我想要的任何地方)。如果这不是一个完全愚蠢的想法,请告诉我,我们都可以继续我们的生活。如果有更好的方法,那就太好了

(文件概述)

[programApp]>;[programView>;选项卡窗格]>;[小组] 面板是使用new创建的,并且存在于一个单独的类中。 我想将数据从面板传递回programView(netbeans中的projectNameView)

我会尽可能多地添加信息


共 (2) 个答案

  1. # 1 楼答案

    你可以用MVC-pattern来做这个

    实际上,根据您的喜好或具体任务,有两种变体。 对于非常简单的情况,您可以使用带有静态字段的类来传递对象。 另一种方法是定义自己的听众,如:

    private myPanel extends JPanel implements Notification {
    

    。。。 在哪里创建面板:

    myPanel.addNotificationReciever(mainPanel);
    

    稍后,只需调用fireNotification或其他任何函数,并为mainPanel实现类似的侦听器

  2. # 2 楼答案

    在我看来,SirVaulterScoff给出了最好的答案,但我想我应该再添加一些(目前还不能添加评论,所以我正在创建一个新的答案)

    您还应该阅读Observer Observable模式(Wikipedia article),它与MVC模式一起使用。在将MVC类链接在一起时,它将非常有用,以确保所有内容都尽可能松散耦合

    附带说明:如果要创建具有用户界面的应用程序,MVC确实是一种模式。它将为您节省很多麻烦,并使您的应用程序更易于维护和扩展