我将两个JPanel叠放在一起,上面那个JPanel是透明的。当我想重绘上面的那个JPanel的时候总是自动重绘下面的那个JPanel,如何才能只重绘上面那个JPanel啊?因为下面的那个JPanel重绘很耗时

解决方案 »

  1.   

    你把下面那个JPanel给setEnabled(false)行不行啊?
      

  2.   

    重绘 你就调用JPanel的paintComponent方法 你调用上面那个JPanel的paintComponent方法 不要调用Jframe的paintComponent方法 就行了吧
      

  3.   

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

  4.   


    直接调用paintComponent方法好像没反应啊连上面的JPanel都不绘制了
      

  5.   

    我试着调用update方法,但是背景就变得不透明了
      

  6.   

    重绘之后,你如果不执行revalidate()方法,应该不会马上刷新出新的内容吧?不过看来你没用到这个方法啊...
      

  7.   


    为什么我调用paintComponents方法之后,调用revalidate,但是还是没反应啊?
      

  8.   

    先不用paintComponects方法,需要更新的用revalidate,不需要的不要用
      

  9.   


    只用revalidate方法,没有自动调用paintComponects方法
      

  10.   

    那为什么你在9#说 “为什么我调用paintComponents方法之后,调用revalidate,但是还是没反应啊?”我的意思是 你对于要重绘的 用revalidate方法  不需要的 不要用 试试看 行不行
      

  11.   

    我就是只用了revalidate方法,然后没反应....
      

  12.   

    话说您的两个Jpanel是不是在同一个类里面啊?
      

  13.   

    我先生成一个JPanel 然后将他的layout设为null,然后在上面叠放两个透明的JPanel
    这样做对不对啊?
      

  14.   

    首先,组件叠放时的显示顺序是,最先加时去的显示在最上面,因为您说有一个是透明的,所以就算顺序不一样显示的结果也是一样的。要不您先检查一下您的jpanel的添加顺序?
      

  15.   

    调用上面的JPanel的repaint()方法呢
      

  16.   

    组件添加的顺序是正确的,因为只有上面的JPanel才能接到键盘事件
      

  17.   

    调用上面的JPanel的repaint()方法后,swing自动重绘了下面的JPanel,好像是因为上面的JPanel是透明的
      

  18.   

    你的透明JPanel究竟想实现什么效果?背景??如果是那样的话在一个JPanel里也能做。