java graphics颜色_[求助]预览选中的颜色为什么必须要实现paintComponent(Graphics g)方法?...

[求助]预览选中的颜色为什么必须要实现paintComponent(Graphics g)方法?

请教~调用JColorChooser.setPreviewPanel(new PrePanel());方法

class PrePanel extends JPanel

{

PrePanel()

{

this.setPreferredSize(new Dimension(300,100));

this.setBorder(BorderFactory.createRaisedBevelBorder());

}

public void paintComponent(Graphics g) //为什么要必须实现这个方法才能显示出选中的颜色?这方法是被谁调用的? {

Dimension size = getSize();

g.setColor(getForeground());

g.fillRect(0,0,size.width,size.height);

}

}

-------------------------------------解决方案--------------------------------------------------------

这个paintComponent()叫做回调方法,不是由你自己去用的.

事实上paintComponent()是由paint()方法调用的,而paint()方法是由EDT(Event dispatching Thread)调用.

不知道你的Swing与Graphics2D学到什么程度了.

其实你只要知道setPreviewPanel的工作原理,也不是一定要去覆写paintComponent方法的.

比如这样应该也可以实现楼主代码的同样效果:

程序代码:

class PrePanel extends JPanel{

PrePanel(){

setPreferredSize(new Dimension(300,100));

set...

}

public void setForeground(Color c){

setBackground(c);

}

}

ps:我其实没用过JColorChooser,上面的代码我也是根据JAVA API DOCS的说明随手写的,没有测试过,不能保证完全没错.

----------------解决方案--------------------------------------------------------

谢谢,你说的很详细了...但我不是太明白原理..

只要是GUI方面的我都没学过...现在自己慢慢学呢...

谢谢Eastsun

----------------解决方案--------------------------------------------------------

能否推荐我一本学习Swing与Graphics2D方面能入门的书

----------------解决方案--------------------------------------------------------

这个,我觉得Core Java 2 里面对Swing与Graphics2D讲的还不错的.

个人感觉最好的还是SUN官方网站上的Swing tutorial了.

[此贴子已经被作者于2007-3-3 11:54:19编辑过]

----------------解决方案--------------------------------------------------------

very 谢谢!

我去好好看看....

----------------解决方案--------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值