JComponent有一个方法setBounds(x,y,w,h),并且Sun公司已经完全实现,我想覆盖或者重写该方法,如何实现?
由于已有的程序中生成了许多各式各样的JComponent,让每个JComponent覆盖父类的该方法显然是不可能的。
有没有如代理接口的方法实现代理JComponent的setBounds(x,y,w,h)的方法。
不管过程多复杂,只要能实现就好。谢谢。

解决方案 »

  1.   

    你想要实现什么样的功能,我觉得你完全没有必要覆盖JComponent的setBounds的功能,你说一下你们想要实现的功能,大家想想有没有其他的方法来实现。
      

  2.   

    LZ为社么要这样做?
    API上这样写的~~
    虽然从技术上讲可以在继承自 JComponent 的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法很好地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是 JPanel 或 JLabel 上设置边框时,我们建议将该组件放入 JPanel 中,并在 JPanel 上设置边框。 
      

  3.   

    lixiaoxue85:
    LZ没有打算设置边框啊,你是不是把setBounds看成setBorder了:)
      

  4.   

    关于布局可以都使用NULL那样不就自己自由的指定了
    没有必要重新写
      

  5.   

    呵呵,就因为我现在使用的null布局,带来了灾难性后果。
    编程时只考虑了在显示器分辨率为1024*768下的情况,
    现在客户要求显示到分辨率更大的情况下,
    结果我要么重写所有的setBounds方法,
    实际上重写所有的setBounds方法已经是不可能的了,
    因为我的程序中估计已经生成有10000个控件。
    所以我想问一下有没有如代理接口似的实现代理方法,
    或者其它的什么方法重新实现JComponent的setBounds方法
      

  6.   

    不是向上转型已经可以了吗?
    Component c=yourComponent;//不管你的组件是什么
    c.setBounds(...);
      

  7.   

    自己写一个静态方法:
    static setBounds(Component c,..){
        c.setBounds(...);
    }
      

  8.   

    就是有办法重写setBounds,难道楼主就能在这一个方法内改变10000控件的重新准确的布局吗?
      

  9.   

    就是有办法重写setBounds,难道楼主就能在这一个方法内改变10000控件的重新准确的布局吗?
    ===================================================
    当然有办法,我可以获得当前系统的分辨率大小,然后求出与设计时大小的比例,
    原有的setBounds方法不作任何改变,程序就能适用于任何分辨率大小的系统我现在也想采用自己写一个静态方法:
    static setBounds(Component c,..){
        c.setBounds(...);
    }
    可是感觉不爽,那样的话相当于借助于第三方类,而且以后所有的组件setBounds都只能通过该方法
      

  10.   

    还是自定义一个Component继承JComponent并且重写setBounds吧。就算1000个component,手工改起来也就一个上午的时间。
      

  11.   

    自定义一个Component继承JComponent
    ===================
    没看明白,那所有的Java组件又得继承我写的Component,最后我不得不重写一套Swing
      

  12.   

    谁也不会,那只好结贴了。
    看来CSDN上高手都不怎么舍得帮忙呀。