gpt4 book ai didi

java - Lotus Notes Agent之间共享JFrame,允许数据传递

转载 作者:行者123 更新时间:2023-12-01 13:18:33 24 4
gpt4 key购买 nike

我正在尝试在 Lotus Notes Java 代理的实例之间共享 JFrame。我想重新使用我的窗口,而不是每次代理执行时重新创建它。

我的类 RaiseJira 扩展了 JFrame,后者扩展了 Frame。当我运行以下代码时,我收到 ClassCastException

Frame[] fs = Frame.getFrames();
for (int i = 0; i < fs.length; i++) {
if (fs[i].getName().equals("RaiseJira")) {
RaiseJira f = (RaiseJira) fs[i];
}
}

如果我将其转换为 JFrame,它工作正常,并且我可以访问 JFrame 方法。我尝试使用 RaiseJira 方法将数据传递给它,因此它需要是正确的类型。

我是否错过了一些沮丧的事情?另外,我是否缺少一种从单独代理将数据传递到通用 JFrame 的更简单方法?

最佳答案

When I run the following code, I get a ClassCastException.

在您的 if 条件中:

if (fs[i].getName().equals("RaiseJira"))

在这种情况下检查框架的名称没有意义,因为您可以拥有一个 JFrame,它不是 RaiseJira 类的实例,但其名称设置为“RaiseJira” ”。例如:

JFrame trollFrame = new JFrame("He he");
trollFrame.setName("RaiseJira");

然后您将在此处遇到 ClassCastException:

if (fs[i].getName().equals("RaiseJira")) { // This is true
RaiseJira f = (RaiseJira) fs[i]; // ClassCastException because is a JFrame not RaiseJira instance
}

如果您想确定给定的帧是否实际上是 RaiseJira 类的实例,您应该使用 instanceof 运算符(我也会使用 enhanced for loop 但它是我):

for (Frame frame : Frame.getFrames()) {
if (frame instanceof RaiseJira) {
RaiseJira raiseJira = (RaiseJira) frame;
}
}

离题

我强烈建议您阅读此主题:The Use of Multiple JFrames, Good/Bad Practice?

关于java - Lotus Notes Agent之间共享JFrame,允许数据传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249409/

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