gpt4 book ai didi

java - 将组件转换到 JPanel 始终为 null

转载 作者:行者123 更新时间:2023-11-30 06:43:39 24 4
gpt4 key购买 nike

我遇到了问题,但一直无法找到解决方案。这是我添加选项卡的代码:

protected void addTab(File file, String tooltip) {
if(alreadyOpened(file)) return;
MyPanel panel = new MyPanel(file);

tabbedPane.addTab(file.getName(), loadIconFrom("icons/save_green.png"), panel, tooltip);
tabbedPane.setSelectedComponent(panel);
}

这是我的代码,我在其中检查选项卡是否已打开(包含相同的文件),如果是,则返回 true。

private boolean alreadyOpened(File file) {
boolean flag = false;
int count = tabbedPane.getTabCount();

for (int i = 0; i < count; i++) {
MyPanel panel = (MyPanel) tabbedPane.getTabComponentAt(i);
// if(panel == null) continue; If I add this line of code tabs are added normaly, but with unwanted duplicates
flag = panel.hasFile(file); //checks if new file contained in selected panel(added through constructor)
}

return flag;
}

问题是当我打开文件时,它会创建新选项卡,但如果我尝试再次打开同一文件,程序会抛出空指针异常,并且选择此部分

flag = panel.hasFile(file);

所以我想知道为什么我的面板为空,如果它显然已经存在?提前致谢。

最佳答案

for (int i = 0; i < count; i++) {
MyPanel panel = (MyPanel) tabbedPane.getTabComponentAt(i);
if(panel == null) continue;
flag = panel.hasFile(file); //checks if new file contained in selected panel(added through constructor)
if (flag) break;
}

尝试上面的代码。在您的情况下,您实际上使用最后一个选项卡组件的 hasFile(file) 调用删除了标志值。

检查循环中有多少个真正的空值。全部?只有一个吗?

如果您可能使用了错误的实例。选项卡已添加到一个实例,但您检查另一个实例。

关于java - 将组件转换到 JPanel 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44001942/

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