JFrame中动态添加或者删除JPanel后总是不正确显示需要的界面问题:

1.删除panel后还是显示之前的界面,新删除的panel在界面上并没有被删除;

2.删除panel1后添加新的panel2,只显示删除panel1后的界面,新添加的panel2不显示;

尽管使用了Pane().repaint();重绘方法,照理来说是可以重新绘制新的界面的,但是界面并没有更新。

那么这里就分两种情况处理:

1.删除或者添加一个非JFrame的直接子控件。

scrollPanel.removeAll();//删除scrollPanel的所有子控件,或者scrollPanel.remove(comp);删除scrollPanel的某个控件。

scrollPanel.updateUI();

这里一定要用updateUI()函数,当scrollPanel的内容或者说界面发生变化时需要更新其UI显示。添加也同理。

contentPanel.add(keyLable);//contentPanel添加一个控件

contentPanel.updateUI();

2.删除一个JFrame的直接子控件。

resultFrame.getContentPane().remove(exceptionLabel);//JFrame删除其直接子控件exceptionLabel

resultFrame.getContentPane().repaint();

因为JFrame没有updateUI()函数,所以这里使用重绘函数repaint();

3.JFrame动态添加一个控件,不管这个控件是否还有很多子控件,情况都一样,可以对其子控件使用updateUI()函数。

但是,这还远远不够,你会发现不管添加了什么控件,这个时候界面就是没有更新。

原因是JFrame没有更新。

你可以尝试放大或者缩小窗口,界面就更新了。

那么怎么处理呢?不可能每次都要放大或缩小窗口吧,所以,这里就需要对JFrame进行刷新其界面的操作。

方法1.重新显示窗体。

resultFrame.getContentPane().add(scrollPanel);
resultFrame.setVisible(false);
resultFrame.setVisible(true);

方法2.重新验证窗体。

resultFrame.getContentPane().add(scrollPanel);
resultFrame.invalidate();
resultFrame.validate();

方法3.重置其窗体大小。

resultFrame.getContentPane().add(scrollPanel);
resultFrame.pack();
resultFrame.setSize(1000, 600);

方法远不止上面这几种,但是仅通过这个方法resultFrame.getContentPane().repaint();这个一定是不行的,他不会真正同步重新更新JFrame,除非有外界因素更新到JFrame,不然界面是不会刷新的。

JFrame上添加、删除Jpanel后动态显示界面问题的更多相关文章

  1. JavaScript Dom基础-9-Dom查找方法; 设置DOM元素的样式; innerHTML属性的应用; className属性的应用; DOM元素上添加删除获取属性;

    JavaScript Dom基础 学习目标 1.掌握基本的Dom查找方法 domcument.getElementById() Domcument.getElementBy TagName() 2.掌 ...

  2. Word:表格前添加新行 + 删除表格后的空行

    本文适用于Word 2007 + Windows 7,造冰箱的大熊猫@cnblogs 2018/8/3 近日新学(百度到)两条新Word操作,记录下来以备查询 1.在表格前添加新行 场景:有没有遇到过 ...

  3. Inno Setup技巧[界面]欢迎页面上添加文字

    原文:Inno Setup技巧[界面]欢迎页面上添加文字 本文介绍在"欢迎页面添加文字"的两种方法. 界面预览: Setup技巧[界面]欢迎页面上添加文字" title= ...

  4. ASP.NET#在设计窗口上添加了一个SqlDataSource控件后,没有显示出来?

    在设计窗口上添加了一个SqlDataSource控件后,没有显示出来,但后台代码是有的 处理的办法:菜单栏->视图->可视辅助->ASP.NET非可视控件 (我用的是VS2012)

  5. js_在原有的日期上添加天数输出添加后的日期

    开始编码工作也有段时间了,想想没有留下点什么,有点遗憾.学到的一些经验,写写,分享一下.也给自己整理一下. 今天分享一下,在原有的日期上添加天数输出添加后的日期.开始做的时候,简单的思路是,直接用ne ...

  6. 黑马基础阶段测试题:创建一个存储字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大数据与云计算”。遍历集合,将长度小于5的字符串从集合中删除,删除成功后,打印集合中的所有元素

    package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...

  7. ItemTouchHelper(实现RecyclerView上添加拖动排序与滑动删除的所有事情)

    简单介绍: ItemTouchHelper是一个强大的工具,它处理好了关于在RecyclerView上添加拖动排序与滑动删除的所有事情.它是RecyclerView.ItemDecoration的子类 ...

  8. qt 在ui界面添加控件后在cpp文件中无法调用?

    问题:qt 在ui界面添加控件后在cpp文件中无法调用? 解决方法:在build选项中选择“重新build项目”,再次在cpp中调用添加的控件发现可以调用了. 还有一种情况导致添加控件后无法调用,就是 ...

  9. Vue 折叠面板Collapse在标题上添加组件后,阻止面板冒泡的用法

    iView组件中,折叠面板Collapse点击面板标题部分,会出现面板收起或展开的效果.那么在面板标题后面再添加下拉框之类的组件时,会出现跟面板点击一样的效果,这时候就需要阻止冒泡的用法了.具体代码: ...

随机推荐

  1. STM32F103RB, KEIL编译出错:cannot open preprocessing output output file ".\神舟i号\main.d" no such file or

    STM32F103RB,   KEIL编译出错:cannot open preprocessing output output file ".\神舟i号\main.d" no su ...

  2. oracle获取时间毫秒数

    select (sysdate-to_date('1970-01-01','yyyy-mm-dd')-8/24)*24*60*60*1000-1* 60 * 60 * 1000  millisecon ...

  3. JPA学习笔记1——JPA基础 (转自CSDN)

    http://blog.csdn.net/chjttony/article/details/6086298 1.JPA简介: Java持久化规范,是从EJB2.x以前的实体Bean(Entity be ...

  4. 安卓开发之玩美解决ADT和SDK不一致问题

    提示:This Android SDK requires Android Developer Toolkit version 21.1.0 or above.  Current version is ...

  5. 李洪强iOS下的实际网络连接状态检测

    iOS下的实际网络连接状态检测 序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求.为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示.对绝大部 ...

  6. scala 学习(三)——Array和ArrayBuffer

    ArrayBuffer:类型化数组 首先需要注意的是Array是定长数组,而ArrayBuffer是可变数组.下面是一个小例子,对数据进行便利和修改的操作.

  7. All in All - poj 1936 (子串)

    字符串子序列查找问题,设置两个指针,一个指向子序列,另一个指向待查找的序列,查找个字符串一次即可判断.   #include <iostream> #include <string. ...

  8. Oracle 数据库排错之 ORA-00600

    [错误代码] ORA-00600 [问题描述] ORA-00600: [kcratr1_lastbwr]错误的处理办法 [问题分析] 出现该错误是因为系统强制关机造成的!症状为数据库无法打开! [问题 ...

  9. bat脚本批处理打war打包

    @echo =========================================== @echo 描述:打包脚本 @echo 作者:霍建国 @echo 日期:2018-03-13 @ec ...

  10. Mysql中查看每个IP的连接数

    ) as ip , count(*) from information_schema.processlist group by ip;