java - 删除不更新 JPanel/JFrame 的组件
问题描述
我有一个更大的程序,在那里我遇到了一个奇怪的错误,我设法将它隔离到这个小代码行中,但是从这里我不能说我做错了什么。
问题是由于某种原因,JFrame/JPanel 在添加和删除面板时忘记更新它的图形。如果我没有为“pbase”面板设置首选大小,或者如果我在移除窗口时调整窗口大小,它会自行修复。
我错过了什么?
public class ADdREMOVEJPANELS extends JFrame implements KeyListener{
public static void main(String[] args) {
new ADdREMOVEJPANELS();
}
JPanel p = new JPanel();
JPanel pbase = new JPanel();
public ADdREMOVEJPANELS(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addKeyListener(this);
p.setBackground(Color.red);
p.setPreferredSize(new Dimension(200,200));
pbase.setBackground(Color.blue);
pbase.setLayout(new BorderLayout());
pbase.setPreferredSize(new Dimension(200,200));
pbase.add(p);
this.setBackground(Color.green);
this.add(pbase);
this.pack();
this.setVisible(true);
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_UP){
System.out.println("works");
pbase.remove(p);
pbase.setLayout(new BorderLayout());
this.pack();
}else if(e.getKeyCode() == KeyEvent.VK_DOWN){
System.out.println("worksdouble");
pbase.add(p);
this.pack();
}
}
}
解决方案
推荐阅读
- python - 将数据从 Python (to_sql) 插入 SQL Server 时出现问题
- java - hbase:META 指向未知区域服务器
- r - 将因子级别设置为在 ggplot2 中不可见
- python - 在生产中从 django 中的乳胶文件生成 pdf 时出错
- javascript - 具有奇怪行为的模态内容
- c# - 识别和单击一组没有 AccessibilityId 或其他唯一标识符的同级元素中的第 n 个元素的最佳方法是什么
- c++ - 为什么这个合并排序代码总是给我这个奇怪的输出?
- javascript - Heroku 上的 Discord.JS 机器人
- google-apps-script - 谷歌应用程序脚本:来自 GCP 文本到语音的响应“audioContent”作为文本文件返回
- java - MVVM 不更新服务器数据