Java中如何实现代理方法

shengli_liao 2007-01-08 02:40:13
JComponent有一个方法setBounds(x,y,w,h),并且Sun公司已经完全实现,我想覆盖或者重写该方法,如何实现?
由于已有的程序中生成了许多各式各样的JComponent,让每个JComponent覆盖父类的该方法显然是不可能的。
有没有如代理接口的方法实现代理JComponent的setBounds(x,y,w,h)的方法。
不管过程多复杂,只要能实现就好。谢谢。
...全文
355 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shengli_liao 2007-01-16
  • 打赏
  • 举报
回复
谁也不会,那只好结贴了。
看来CSDN上高手都不怎么舍得帮忙呀。
rehte 2007-01-12
  • 打赏
  • 举报
回复
明白了。不好改。如果你不准备使用布局管理器,你说那种方法可能是最好的。
shengli_liao 2007-01-12
  • 打赏
  • 举报
回复
自定义一个Component继承JComponent
===================
没看明白,那所有的Java组件又得继承我写的Component,最后我不得不重写一套Swing
benewu 2007-01-12
  • 打赏
  • 举报
回复
还是自定义一个Component继承JComponent并且重写setBounds吧。就算1000个component,手工改起来也就一个上午的时间。
shengli_liao 2007-01-12
  • 打赏
  • 举报
回复
因为原来已经在1024*768上作了定义,而且显示的特别顺眼,
现在如果换了其它的分辨率,只是将原组件大小及位置按计算的比例重新定位,
位置和大小当然一起缩放
rehte 2007-01-12
  • 打赏
  • 举报
回复
你的意思是说每个组件都按照这个比例缩放?但是位置怎么重定义?
shengli_liao 2007-01-12
  • 打赏
  • 举报
回复
就是有办法重写setBounds,难道楼主就能在这一个方法内改变10000控件的重新准确的布局吗?
===================================================
当然有办法,我可以获得当前系统的分辨率大小,然后求出与设计时大小的比例,
原有的setBounds方法不作任何改变,程序就能适用于任何分辨率大小的系统

我现在也想采用自己写一个静态方法:
static setBounds(Component c,..){
c.setBounds(...);
}
可是感觉不爽,那样的话相当于借助于第三方类,而且以后所有的组件setBounds都只能通过该方法
shengli_liao 2007-01-11
  • 打赏
  • 举报
回复
呵呵,就因为我现在使用的null布局,带来了灾难性后果。
编程时只考虑了在显示器分辨率为1024*768下的情况,
现在客户要求显示到分辨率更大的情况下,
结果我要么重写所有的setBounds方法,
实际上重写所有的setBounds方法已经是不可能的了,
因为我的程序中估计已经生成有10000个控件。
所以我想问一下有没有如代理接口似的实现代理方法,
或者其它的什么方法重新实现JComponent的setBounds方法
rehte 2007-01-11
  • 打赏
  • 举报
回复
就是有办法重写setBounds,难道楼主就能在这一个方法内改变10000控件的重新准确的布局吗?
hcx_2008 2007-01-11
  • 打赏
  • 举报
回复
自己写一个静态方法:
static setBounds(Component c,..){
c.setBounds(...);
}
hcx_2008 2007-01-11
  • 打赏
  • 举报
回复
不是向上转型已经可以了吗?
Component c=yourComponent;//不管你的组件是什么
c.setBounds(...);
mdxk 2007-01-10
  • 打赏
  • 举报
回复
关于布局可以都使用NULL那样不就自己自由的指定了
没有必要重新写
rehte 2007-01-08
  • 打赏
  • 举报
回复
lixiaoxue85:
LZ没有打算设置边框啊,你是不是把setBounds看成setBorder了:)
lixiaoxue85 2007-01-08
  • 打赏
  • 举报
回复
LZ为社么要这样做?
API上这样写的~~
虽然从技术上讲可以在继承自 JComponent 的所有对象上设置边框,但是很多标准 Swing 组件的外观实现无法很好地使用用户设置的边框。通常,如果希望在标准的 Swing 组件而不是 JPanel 或 JLabel 上设置边框时,我们建议将该组件放入 JPanel 中,并在 JPanel 上设置边框。

rehte 2007-01-08
  • 打赏
  • 举报
回复
你想要实现什么样的功能,我觉得你完全没有必要覆盖JComponent的setBounds的功能,你说一下你们想要实现的功能,大家想想有没有其他的方法来实现。

62,635

社区成员

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

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