gpt4 book ai didi

java - 如何跟踪以前打开的内部框架

转载 作者:行者123 更新时间:2023-12-01 12:57:20 25 4
gpt4 key购买 nike

这是我之前问题的扩展,但我只是想知道假设在运行时它会生成一个类的多个对象(因此它基本上打开 4 个内部框架)并显示从不同路径打开的不同图像。所以我的问题是,如果假设打开了 4 个框架,我将如何获取打开第二个框架的路径的信息(因此,当第二个框架打开时,我想获取它的路径(因此,当激活某个框架时)),因为每当我尝试调用 getPath() - 它为我提供了已打开的最新图像路径,但我不知道如何获取以前打开的帧的信息。

(我使用了InternalFrameActivated(),它显示了哪个框架被激活,并且还给出了正确的路径,但如果假设另一个类正在调用该类,我不知道如何使用它)。有人知道如何解决这个问题吗?

这是我的旧问题的链接:https://stackoverflow.com/questions/23769006/how-to-get-information-from-previously-opened-internal-frame

最佳答案

这取决于您打开窗口的方式。您可以创建一个工厂/管理器来为指定路径创建一个窗口。

这将允许您维护一个查找机制,以便您可以向管理员询问指定路径的窗口

已更新示例

有多种方法可以实现这一点,我个人更喜欢动态可配置的方法,其中与您交互的管理器充当管理器的其他可配置实现的代理。这将允许您插入新的/不同的管理器来满足您随着时间的推移的需求,但这是一个相当复杂的解决方案。

相反,您可以简单地使用singleton创建一个简单的管理器。/enum 方法,例如...

public enum PictureWindowManager {

INSTANCE;

private Map<Image, List<JInternalFrame>> mapWindows;

private PictureWindowManager(){

mapWindows = new HashMap<>(25);

}

public JInternalFrame createWindowFor(Image image) {

List<JInternalFrame> frames = mapWindows.get(image);
if (frames == null) {
frames = new ArrayList<>(25);
mapWindows.put(image, frames);
}
JInternalFrame frame = new JInternalFrame("Picture");
frame.add(new JScrollPane(new JLabel(new ImageIcon(image))));
frames.add(frame);

return frame;

}

public List<JInternalFrame> getFromFor(Image image) {

JInternalFrame frame = null;
return mapWindows.get(image);

}
}

然后你可以使用类似的东西创建窗口

JInternalFrame frame = PictureWindowManager.INSTANCE.createWindowFor(image);

然后,当您需要时,您可以使用类似...的内容检索Image的窗口

List<JInternalFrame> frames = PictureWindowManager.INSTANCE.getFromFor(image);

现在,此示例演示了一种允许单个 Image 存在多个窗口的方法,您不必这样做,您可以简单地在 之间维护一对一的关系>ImageJInternalFrame(如果更好地满足您的需求)

关于java - 如何跟踪以前打开的内部框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770178/

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