gpt4 book ai didi

Java Swing、Corba 对象 - 如何在 DefaultListModel 中存储 Corba 对象?

转载 作者:行者123 更新时间:2023-11-30 02:02:50 35 4
gpt4 key购买 nike

我有这样的 IDL 接口(interface):

interface User
{
string toString();
//..
};

interface Group
{
typedef sequence<User> Users;
Users getUsers();

};

当我将它翻译成 C++ 时,我得到了这样的东西:

// ...
Group::Users* GroupImpl::getUsers()
{
// ..return sequence of 'User'-objects
}

在客户端(用 Java 编写)我想向我的用户展示。我这样做:

public void showAllUsers() 
{
User[] users = interface_obj.getUsers();
if(users.length != 0)
{
DefaultListModel model = new DefaultListModel();
for(int i=0; i<users.length; i++)
model.addElement(users[i]);
this.usersList.setModel(model);
}
}

this.usersList 是一个 JList

当我像我写的那样做时,我只看到我的用户对象的 IOR:

IOR :0123405948239481293812312903891208320131293812381023
IOR: 0092930912617819919191818173666288810010199181919919

等等...

怎么弄成那样,看他们的toString(); DefaultListModel 中的表示?我不想这样做:

model.addElement(users[i].toString());

这不是重点。当我使用 RMI 而不是 CORBA 时,model.addElement(users[i]); 正是我所需要的,因为我看到了用户字符串表示形式。但我需要使用 CORBA 并存储在 DefaultListModel corba-user-objects 中,而不是字符串。请帮忙。

最佳答案

我猜 stub 的 toString() 方法实际上并没有调用远程 CORBA 对象的 toString() 方法。尝试使用另一个方法名称(如 getName()),并使用调用此方法的自定义渲染器。

也就是说,将用户建模为远程 CORBA 对象真的是个好主意吗?这将导致大量或远程方法调用只是为了显示用户的名称,而这些方法调用基本上不受您的控制,因为 Swing 组件会生成它们。您不应该改用 DTO 吗?

关于Java Swing、Corba 对象 - 如何在 DefaultListModel 中存储 Corba 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769997/

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