0

我需要问一个小问题,因为它激怒了我。

如何在 Java 中将一个值从一帧传递到另一帧?

下面我编写了一个应该返回值的小脚本,但我不太清楚如何在另一个框架中访问它。

这是假设将 JcomboBox 中的当前值作为字符串返回到另一个框架的代码:

public String getUser(String user)

{

 user = (String)jComboBox1.getSelectedItem().toString();

return user;

}

我认为它会起作用的方式是将该类的一个新实例调用到另一个框架中(类名称是editUser)所以这就是我认为我需要做的。

public editPass() 

{

initComponents();

editUser name = new editUser();

String test = name.getUser();

}

提前感谢您的任何建议。

4

1 回答 1

0

问题在于这样做:editUser name = new editUser()是您正在创建一个新实例(除了根据约定类名应以大写开头的事实)。这会导致您丢失任何数据,因为您现在正在引用一个新对象。

如果您需要访问前一帧的数据,您需要做的是:

  • 使用所有相关数据创建一个新对象并将其传递到下一帧或
  • 将当前帧传递到下一帧。这将允许新框架能够引用前一个框架。

作为旁注,卡片布局可能与您要实现的目标相关。

编辑:根据您的评论问题:假设您有一个editUser框架,假设我们调用它frame1并填充您需要的所有数据。然后,用户按下 Next 或类似的东西会导致他/她进入下一帧,因此frame1将不再隐藏或不存在,具体取决于您的实现。

让我们称之为第二帧frame2。现在,frame2您需要访问存储在frame1. 这样做:editUser name = new editUser();将导致frame2创建 的实例frame1,因此意味着您创建了一个具有空值的新框架。调用name.getUser()不应该产生任何东西。

当我提到使用相关数据创建对象时,我的意思是,如果您正在编辑用户值,您可以创建一个对象,该对象将包含所有已编辑的信息。所以它可以有像userId, originalUserName,newUserName等这样的字段。

用户在您的 中按下 Next 后frame1,您可以创建和填充此对象,并使用它将数据从一帧传输到下一帧。在这种情况下,您将创建的对象将被称为数据传输对象 (DTO)。

因此,第二帧的构造函数看起来像这样:

public editPass(UserEditDTO userEditDTO)
{
    initComponents();
    String test = userEditDTO.getNewUserName();  //gets the new username the user has provided.
}

在您的editUser班级中,就在创建 的新实例之前editPass,您将执行以下操作:

...
UserEditDTO uEDTO = new UserEditDTO();
uEDTO = ... //set all the relevant fields here
new editPass(uEDTO).setVisible(true);
...

或者,您可以传递对frame1而不是 DTO 的引用。这种方法更简单。所以你的构造函数editPass看起来像这样:

public editPass(editUser editUser)
{
    initComponents();
    String test = editUser.getUser();
}

您的editUser代码如下所示:

...
new editPass(this).setVisible(true);
...
于 2013-02-15T06:19:21.510 回答