求助,关于JPanel的重绘问题

buaadu 2009-08-27 10:37:05
我将两个JPanel叠放在一起,上面那个JPanel是透明的。当我想重绘上面的那个JPanel的时候总是自动重绘下面的那个JPanel,如何才能只重绘上面那个JPanel啊?因为下面的那个JPanel重绘很耗时
...全文
404 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
buaadu 2009-09-10
  • 打赏
  • 举报
回复
我的解决思路有问题,换了一种解决办法
buaadu 2009-08-27
  • 打赏
  • 举报
回复
我就是只用了revalidate方法,然后没反应....
justinavril 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 buaadu 的回复:]
引用 10 楼 justinavril 的回复:
先不用paintComponects方法,需要更新的用revalidate,不需要的不要用


只用revalidate方法,没有自动调用paintComponects方法
[/Quote]
那为什么你在9#说 “为什么我调用paintComponents方法之后,调用revalidate,但是还是没反应啊?”

我的意思是 你对于要重绘的 用revalidate方法 不需要的 不要用 试试看 行不行
buaadu 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 justinavril 的回复:]
先不用paintComponects方法,需要更新的用revalidate,不需要的不要用
[/Quote]

只用revalidate方法,没有自动调用paintComponects方法
justinavril 2009-08-27
  • 打赏
  • 举报
回复
先不用paintComponects方法,需要更新的用revalidate,不需要的不要用
buaadu 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 justinavril 的回复:]
引用 6 楼 buaadu 的回复:
引用 4 楼 justinavril 的回复:
引用 2 楼 buaadu 的回复:
试过了,好像不行啊...

一般重绘之后都要revalidate一下,你只让上面的revalidate,而不让下面的revalidate,试试看行不行?

这个什么意思啊?

重绘之后,你如果不执行revalidate()方法,应该不会马上刷新出新的内容吧?

不过看来你没用到这个方法啊...
[/Quote]

为什么我调用paintComponents方法之后,调用revalidate,但是还是没反应啊?
justinavril 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 buaadu 的回复:]
引用 4 楼 justinavril 的回复:
引用 2 楼 buaadu 的回复:
试过了,好像不行啊...

一般重绘之后都要revalidate一下,你只让上面的revalidate,而不让下面的revalidate,试试看行不行?

这个什么意思啊?
[/Quote]
重绘之后,你如果不执行revalidate()方法,应该不会马上刷新出新的内容吧?

不过看来你没用到这个方法啊...
buaadu 2009-08-27
  • 打赏
  • 举报
回复
我试着调用update方法,但是背景就变得不透明了。。。
buaadu 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 justinavril 的回复:]
引用 2 楼 buaadu 的回复:
试过了,好像不行啊...

一般重绘之后都要revalidate一下,你只让上面的revalidate,而不让下面的revalidate,试试看行不行?
[/Quote]
这个什么意思啊?
buaadu 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 knightzhuwei 的回复:]
重绘 你就调用JPanel的paintComponent方法 你调用上面那个JPanel的paintComponent方法 不要调用Jframe的paintComponent方法 就行了吧
[/Quote]

直接调用paintComponent方法好像没反应啊。。。连上面的JPanel都不绘制了
justinavril 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 buaadu 的回复:]
试过了,好像不行啊...
[/Quote]
一般重绘之后都要revalidate一下,你只让上面的revalidate,而不让下面的revalidate,试试看行不行?
knightzhuwei 2009-08-27
  • 打赏
  • 举报
回复
重绘 你就调用JPanel的paintComponent方法 你调用上面那个JPanel的paintComponent方法 不要调用Jframe的paintComponent方法 就行了吧
buaadu 2009-08-27
  • 打赏
  • 举报
回复
试过了,好像不行啊...
justinavril 2009-08-27
  • 打赏
  • 举报
回复
你把下面那个JPanel给setEnabled(false)行不行啊?
priestmoon 2009-08-27
  • 打赏
  • 举报
回复
你的透明JPanel究竟想实现什么效果?背景??如果是那样的话在一个JPanel里也能做。
buaadu 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 chosen0ne 的回复:]
调用上面的JPanel的repaint()方法呢
[/Quote]
调用上面的JPanel的repaint()方法后,swing自动重绘了下面的JPanel,好像是因为上面的JPanel是透明的
buaadu 2009-08-27
  • 打赏
  • 举报
回复
组件添加的顺序是正确的,因为只有上面的JPanel才能接到键盘事件
chosen0ne 2009-08-27
  • 打赏
  • 举报
回复
调用上面的JPanel的repaint()方法呢
leedone1989 2009-08-27
  • 打赏
  • 举报
回复
首先,组件叠放时的显示顺序是,最先加时去的显示在最上面,因为您说有一个是透明的,所以就算顺序不一样显示的结果也是一样的。要不您先检查一下您的jpanel的添加顺序?
buaadu 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 leedone1989 的回复:]
话说您的两个Jpanel是不是在同一个类里面啊?
[/Quote]
我先生成一个JPanel 然后将他的layout设为null,然后在上面叠放两个透明的JPanel
这样做对不对啊?
加载更多回复(1)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧