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. Java 连接使用 Redis

    1. 开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. 首先你需要下载驱动包,下载 jedis.j ...

  2. MQTT压力测试之Tsung的使用

    简介 Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器.针对 HTTP 测试,Tsung ...

  3. Python技术公众号100天了

    公众号100天了,是个值得一提的日子! 我从2017年10月31日开始做这个公众号,到今天2018年2月7日,差不多100天时间 .虽然公众号很早就申请了,但直到去年10月31日,我才有真正把这个公众 ...

  4. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  5. C# 操作超时正常还是错

    net(客户端)调用IIS(服务端)出现503后,就报操作超时错误 问题描述:服务端环境:IIS 客户端环境:windowsxp + iis + .net 调用时出现如下错误:System.Net.W ...

  6. cpu分析简介

    进程占用CPU过高,一般有以下两种原因:          1.    业务量过大导致进程处理负荷高,占用CPU资源:2.    程序BUG导致,比如死循环:    初步查看cpu占用情况top进一步 ...

  7. ubuntu 12.10 apt-get 源

    更改apt-get源配置文件/etc/apt/sources.list 用一下内容替换掉 deb http://mirrors.163.com/ubuntu/ precise main restric ...

  8. Linux下printf函数显示不同的颜色(转)

    Linux下printf函数显示不同的颜色 在学习Linux网络编程的时候做一个聊天系统,当时为了界面更漂亮点,于是搜索了下关于printf()函数的用法,给printf的输出加上些特效比如颜色,可以 ...

  9. abp发布需要注意的问题

    1>报system.object不存在. 需要从相关目录下面复制System.Runtime.dll eg:C:\Program Files (x86)\Reference Assemblies ...

  10. Servlet 服务器 HTTP 响应

    状态行包括 HTTP 版本(在本例中为 HTTP/1.1).一个状态码(在本例中为 200)和一个对应于状态码的短消息(在本例中为 OK). 下表总结了从 Web 服务器端返回到浏览器的最有用的 HT ...