当前位置: 代码迷 >> Java相关 >> [求助]预览选中的颜色为什么必须要实现paintComponent(Graphics g)方法?
  详细解决方案

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

热度:828   发布时间:2007-03-03 10:29:14.0
[求助]预览选中的颜色为什么必须要实现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);
}
}

---------------------
搜索更多相关的解决方案: Graphics  FONT  颜色  PrePanel  预览  

----------------解决方案--------------------------------------------------------
这个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 谢谢!
我去好好看看....
----------------解决方案--------------------------------------------------------
  相关解决方案