JFrame上添加、删除Jpanel后动态显示界面问题
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后动态显示界面问题的更多相关文章
- JavaScript Dom基础-9-Dom查找方法; 设置DOM元素的样式; innerHTML属性的应用; className属性的应用; DOM元素上添加删除获取属性;
JavaScript Dom基础 学习目标 1.掌握基本的Dom查找方法 domcument.getElementById() Domcument.getElementBy TagName() 2.掌 ...
- Word:表格前添加新行 + 删除表格后的空行
本文适用于Word 2007 + Windows 7,造冰箱的大熊猫@cnblogs 2018/8/3 近日新学(百度到)两条新Word操作,记录下来以备查询 1.在表格前添加新行 场景:有没有遇到过 ...
- Inno Setup技巧[界面]欢迎页面上添加文字
原文:Inno Setup技巧[界面]欢迎页面上添加文字 本文介绍在"欢迎页面添加文字"的两种方法. 界面预览: Setup技巧[界面]欢迎页面上添加文字" title= ...
- ASP.NET#在设计窗口上添加了一个SqlDataSource控件后,没有显示出来?
在设计窗口上添加了一个SqlDataSource控件后,没有显示出来,但后台代码是有的 处理的办法:菜单栏->视图->可视辅助->ASP.NET非可视控件 (我用的是VS2012)
- js_在原有的日期上添加天数输出添加后的日期
开始编码工作也有段时间了,想想没有留下点什么,有点遗憾.学到的一些经验,写写,分享一下.也给自己整理一下. 今天分享一下,在原有的日期上添加天数输出添加后的日期.开始做的时候,简单的思路是,直接用ne ...
- 黑马基础阶段测试题:创建一个存储字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大数据与云计算”。遍历集合,将长度小于5的字符串从集合中删除,删除成功后,打印集合中的所有元素
package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...
- ItemTouchHelper(实现RecyclerView上添加拖动排序与滑动删除的所有事情)
简单介绍: ItemTouchHelper是一个强大的工具,它处理好了关于在RecyclerView上添加拖动排序与滑动删除的所有事情.它是RecyclerView.ItemDecoration的子类 ...
- qt 在ui界面添加控件后在cpp文件中无法调用?
问题:qt 在ui界面添加控件后在cpp文件中无法调用? 解决方法:在build选项中选择“重新build项目”,再次在cpp中调用添加的控件发现可以调用了. 还有一种情况导致添加控件后无法调用,就是 ...
- Vue 折叠面板Collapse在标题上添加组件后,阻止面板冒泡的用法
iView组件中,折叠面板Collapse点击面板标题部分,会出现面板收起或展开的效果.那么在面板标题后面再添加下拉框之类的组件时,会出现跟面板点击一样的效果,这时候就需要阻止冒泡的用法了.具体代码: ...
随机推荐
- Phalcon 訪问控制列表 ACL(Access Control Lists ACL)
Phalcon在权限方面通过 Phalcon\Acl 提供了一个轻量级的 ACL(訪问控制列表). Access Control Lists (ACL) 同意系统对用户的訪问权限进行控制,比方同意訪问 ...
- rabbitmqctl 报错
RabbitMQ 安装成功后,cmd dos命令进入RabbitMQ的安装路径,如 E:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10\sb ...
- Netty(一):初识Netty
Netty是什么? Netty是由JBOSS提供的一个java开源框架. Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 封装了JDK底 ...
- Atitit.文件搜索工具 attilax 总结
Atitit.文件搜索工具 attilax 总结 1. 指定目录按照体积大小精确搜索1 1.1. File Seeker 4.5 版本的可以,3.5版本的不行..1 2. 按照文件内容搜索1 2.1. ...
- Jenkins安装和配置系列
转自:http://www.cnblogs.com/zz0412/tag/jenkins/default.html?page=1 Jenkins进阶系列之——18Jenkins语言本地化 Jen ...
- [Android]生成heap dump文件(.hprof)
Android生成heap dump文件(.hprof) 一个heap dump就是一个程序heap的快照,能够获知程序的哪些部分正在使用大部分的内存. 它保存为一种叫做HPROF的二进制格式.对于A ...
- Unity3d中模型导入轴向不对的解决方法
在unity3d中导入模型,经常会遇到模型的轴向与unity中默认的轴向不符合的情况. 网上有很多解决办法都是说在3dmax中导出模型时修改模型的轴向,那么我接下来讲的就是如何在unity里面修改模型 ...
- Kafka学习(一)kafka指南(about云翻译)
kafka 权威指南中文版 问题导读 1. 为什么数据管道是数据驱动企业的一个关键组成部分? 2. 发布/订阅消息的概念及其重要性是什么? 第一章 初识 kafka 企业是由数据驱动的.我们获取信息, ...
- [Android]ListView & ViewPager & GridView 常见问题解决方法
1. ViewPager左右滚动到两边时的渐变色,若想禁止,可以在布局文件中配置:android:overScrollMode="never" 2. ListView,GridVi ...
- shiro配置数据库连接池总结
在项目中要使用shiro做权限认证和登录许可等,现在总结一份,以备以后使用 ms sql版本 [main]ds=com.mchange.v2.c3p0.ComboPooledDataSourceds. ...