Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取jframe中已卸下的面板_Java_Swing_User Interface_Jframe_Jpanel - Fatal编程技术网

Java 读取jframe中已卸下的面板

Java 读取jframe中已卸下的面板,java,swing,user-interface,jframe,jpanel,Java,Swing,User Interface,Jframe,Jpanel,首先让我解释一下这个问题 在第一个视图中,我的框架中有一个jpanel pnlBttns,它有两个按钮,如图所示 单击编辑视频时,此jpanel被删除,我将另一个名为editPanel的jpanel添加到我的框架中,如下图所示 现在,问题来了 当我点击后退按钮时,我向后移除editPanel并显示PNLBTTN。但我的框架显示如下,两个按钮在那里,但没有文本 这个问题很奇怪,因为当再次单击“编辑视频”按钮(尽管它是空的)时,它会将我带到“编辑面板”,并显示所有键正常。那么,为什么PNLBT

首先让我解释一下这个问题

在第一个视图中,我的框架中有一个jpanel pnlBttns,它有两个按钮,如图所示

单击编辑视频时,此jpanel被删除,我将另一个名为editPanel的jpanel添加到我的框架中,如下图所示

现在,问题来了

当我点击后退按钮时,我向后移除editPanel并显示PNLBTTN。但我的框架显示如下,两个按钮在那里,但没有文本

这个问题很奇怪,因为当再次单击“编辑视频”按钮(尽管它是空的)时,它会将我带到“编辑面板”,并显示所有键正常。那么,为什么PNLBTTN没有正确显示,它没有正确地“重新绘制”

代码

sscce.java 另一个版本,

要隐藏PNLBTTN

state = "edit";
frame.remove(pnlBttns);
frame.add(editPanel, BorderLayout.EAST);
frame.revalidate();
frame.repaint();
state = "edit";
frame.remove(pnlBttns);
frame.add(editPanel, BorderLayout.EAST);
frame.revalidate();
frame.repaint();
再说一遍

frame.remove(editPanel);
frame.add(pnlBttns);
frame.revalidate();
frame.repaint();
frame.remove(editPanel);
frame.add(pnlBttns, BorderLayout.EAST);    //May be you need to add this to east
frame.revalidate();
frame.repaint();
我已经检查并100%确定,我不知道在哪里更新两个按钮的文本

我想问题出在面板的尺寸上

你们看到的黑色是我的视频播放器,当pnlBttns被移除时,它的大小会增加,因为editPanel更薄,当添加回来时,mediaPlayer也会和pnlBttns重叠一些。这可能是问题所在,但文本本应在那里。我怎样才能解决这个问题


感谢您的时间和努力。

每当我看到使用删除/添加方法的代码时,我建议您应该改用。它将管理正确面板的显示。

每当我看到使用“删除/添加”方法的代码时,我建议您应该改用。它将管理正确面板的显示。

尝试使用
setVisible(false)
而不是删除它,然后当您希望它再次出现时,使用
setVisible(true)
尝试使用
setVisible(false)
而不是删除它,然后当您希望它再次出现时,使用
setVisible(true)

我曾经在使用Swigs和NetBeans时遇到过同样的问题。。挣扎了几个小时后。。我所做的只是重新启动IDE。。问题就解决了。。试一试吧

我曾经在使用Swigs和NetBeans时遇到过同样的问题。。挣扎了几个小时后。。我所做的只是重新启动IDE。。问题就解决了。。试一试

你是对的,面板的宽度可能是原因,只要不改变视频播放器的宽度,如果问题仍然存在,
我希望您使用JLayeredPane,并在该窗格上添加面板,并使用setVisible(true)和setVisible(false)显示或隐藏面板,这是一种简单的方法,不会产生错误。

给我你对答案的反馈。

你是对的,面板的宽度可能是原因,只要不要更改视频播放器的宽度,如果问题仍然存在,
我希望您使用JLayeredPane,并在该窗格上添加面板,并使用setVisible(true)和setVisible(false)显示或隐藏面板,这是一种简单的方法,不会产生错误。
给我你对答案的反馈

再说一遍

frame.remove(editPanel);
frame.add(pnlBttns);
frame.revalidate();
frame.repaint();
frame.remove(editPanel);
frame.add(pnlBttns, BorderLayout.EAST);    //May be you need to add this to east
frame.revalidate();
frame.repaint();
附:我的第100个答案

再说一遍

frame.remove(editPanel);
frame.add(pnlBttns);
frame.revalidate();
frame.repaint();
frame.remove(editPanel);
frame.add(pnlBttns, BorderLayout.EAST);    //May be you need to add this to east
frame.revalidate();
frame.repaint();


PS:我的第100个答案。

尝试使用
setVisible(false)
而不是删除它,然后当您希望它再次出现时,使用
setVisible(true)
好的。这可能会有帮助。让我试试@StormeHawke@StormeHawke:也许这应该是一个答案。@HovercraftFullOfEels-也许你是对的,洛诺,没有帮助。setVisible(flase)隐藏面板,但再次将其设置为true时,不会显示回面板@使用
setVisible(false)
而不是删除它,然后当您希望它再次出现时,使用
setVisible(true)
确定。这可能会有帮助。让我试试@StormeHawke@StormeHawke:也许这应该是一个答案。@HovercraftFullOfEels-也许你是对的,洛诺,没有帮助。setVisible(flase)隐藏面板,但再次将其设置为true时,不会显示回面板@StormeHawkeSorry,但我不想在选项卡中显示它,我更希望在用户完成编辑后,按“完成”返回主页。@jeez:CardLayout非常适合您刚才描述的内容。卡米克1+。@HovercraftFullOfEels在我看来,宽度是罪魁祸首。请参见对穆克什回答的评论。但我真的不想要选项卡式结构。我希望用户可以点击编辑按钮,他看到编辑工具,然后点击完成,返回主面板,在那里他可以选择上传。我尊重他的建议,但它只是我不想要那个设计。编译、运行的最小代码示例没有与您的问题无关的额外代码(例如,没有ActionListener代码,除非显示和删除JPanel需要代码)。同样,它必须很小,足够小,可以完整地发布在这里,它必须是可运行和可编译的,而不需要外部依赖项,如图像或数据库。@hovercraftfullofels添加了ssce。请帮忙。问题是当我将visible设置为false时,它会隐藏,但不会再次显示。即使将其设置为true。抱歉,但我不想在选项卡中显示它,我更希望在用户完成编辑后,按“完成”并返回主页。@jeez:CardLayout非常适合您刚才描述的内容。卡米克1+。@HovercraftFullOfEels在我看来,宽度是罪魁祸首。请参见对穆克什回答的评论。但我真的不想要选项卡式结构。我希望用户可以点击编辑按钮,他看到编辑工具,然后点击完成,返回主面板,在那里他可以选择上传。我尊重他的建议,但它只是我不想要那个设计。编译、运行的最小代码示例没有与您的问题无关的额外代码(例如,没有ActionListener代码,除非co