2 tach1bana Tach1banA 于 2016.04.29 12:35 提问

关于Java Swing中的repaint()方法及setVisible()的问题

我写了一个JFrame, 加了一个JComponent,进行一些处理后使用removeAll()移除了JComponent中的所有组件,然后调用add(JPanel)添加了一个新的组件,最后调用repaint()方法显示这个JPanel 这时发现JPanel无法显示,但调整窗口大小后就能显示 因为调整窗口大小不是会自动调用repaint()方法吗?但是我自己调用了啊为什么不会显示嘞. 接下来, 我在repaint()方法后面加上setVisible(false); setVisible(true) 之后发现不用调整窗口大小也能显示了. 谁能给我具体讲一下这两个方法的实现细节?看过帮助文档了 没怎么看懂

1个回答

CSDNXIAON
CSDNXIAON   2016.04.29 12:42

关于Swing的UpdataUI方法问题
关于 java swing 中的repaint 和 revalidate 含义
Java Swing 中三种事件处理方法
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于repaint()和validate()方法区别的个人见解
repaint()方法是重绘,而validate()是重载,一般来说,从一个容器中删除某个组件需要调用repaint(),而把某个组件添加到某一容器中,则需调用validate()。举个例子: 有两个JPanel分别为p1和p2,要把p2添加到p1里面,则需这样写: p1.add(p2); p1.validate(); 要从p1中移除p2,则需这样写: p1.remove
swing 中重写repaint方法后画图会出现闪烁或者不及时更新的解决方法
1:往上流传的是双缓冲区的解法,但是这样会对内存照成浪费,并且如果在分布式应用中采用此方法,后果是很严重的2:究其原因,是我们在repaint触发时,没有将当前绘制的图形进行显示import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.event.MouseAdapt
java swing中setVisible(true);方法的真正作用
setVisible(true);方法的意思是说数据模型已经构造好了,允许JVM可以根据数据模型执行paint方法开始画图并显示到屏幕上了,并不是显示图形,而是可以运行开始画图了。这个方法和java多线程的start方法有点异曲同工之妙,start方式是允许run方法运行了,start方法和setVisible方法很相似。但为了安全起见,还是要把setVisible方法放到最后面。...
java,swing中setvisible()使用注意事项
java中的setvisible(true)目的是使控件可以显示出来,如果该控件已经被显示出来,那么该方法是控件显示在窗口的最前方。 但其使用的位置需要注意。setVisible的对象一般是该对象的使用者调用的。如果setVisible在某个控件的内部,那么在setVisible函数后面添加的控件就显示不出来了。 原因就在于,setVisible(true)并不是告诉JVM让该控件可见,而是在
关于 java swing 中的repaint 和 revalidate 含义
   repaint 对组件进行重绘,比如一个panel,当你remove掉panel里面的一个组件时,你必须调用repaint方法才能对panel进行重绘,进行刷新,你想要删除的组件才能在界面上消失。   revalidate 对组件进行验证,比如一个panel,当你remove掉panel里面的一个组件时,当你调用revalidate方法后,panel的布局会把剩下来的组件重新布局一次。
java swing setEnabled setVisible区别
最近,又重来玩玩Java的swing组件,虽说以后用得不多,但是确实有时候还是需要的。 在写jpanel的时候,发现这两个方法使用很频繁,但是有时候不明白其中的区别,上网也没有查到,就查了查官方的API,发现是这样说的public void setVisible(boolean aFlag) 使该组件可见或不可见。重写 Component.setVisiblepublic void setEna
java中paint,repaint,update之间的关系(闪烁问题的解决)
最近总结了一下java中的paint,repaint和updata三者之间的关系,首先咱们都知道用paint方法来绘图,用repaint重绘,用update来写双缓冲。但是他们之间是怎么来调用的呢,咱们来分析一下(想直接看结果,请跳过分析过程): -------------------------------------------------------------------------
java新手,用repaint方法重新绘图
最近在学习paint方法的使用,想着用一个按钮来改变背景图片(就像我们平时做的那样),然后各方查资料。当然,资料是查不到多少的,因为百度首页的前几页的那几个博客,除了一个原创之外(虽然写的很晦涩难懂),其他的都是滥竽充数之徒!最让我恼火的是百度知道里面的登徒子,一个个为了点点积分而胡乱回答,真不知道那几位问问题的同路那个时候想法。     所以我决定把我自己的repaint代码贴上,因为我冥思苦
java画图总结之三(常用方法paint,repaint,update)
三,常用方法paint,repaint,update 这个问题的由来是因为,我在编写java小程序,画图的时候,发现我重写了paint(graphics g)方法,而执行的时候调用的是repaint()无参方法。老师说,repaint里面间接调用了paint方法。但是是如何间接调用的呢?repaint方法里面是否new了一个graphics对象呢然后传给paint呢? 首先paint方法,并不
Swing组件的updateUI()和repaint()
在最近做的一个界面中,需要重绘窗口,用repaint()方法,发现不好用了。后来改用updateUI(),功能又恢复正常。了解了一下这两个方法的区别,updateUI()通常当look and feel发生变化时调用,从UIManager中获取新的L&F,应用到组件上,重绘的范围比较大,要稍微慢一些。repaint()只是通知RepaintManager重绘组件,不包括UI和布局的管理。