2011-05-26 20 views
1

我只是看了JSlider SourceCode 的源代码,并且如果因为模板模式而发现了大量的repaint()的话。 但我的问题是我没有找到paint方法,它实际上描绘了JSlider。JSlider实际上将被绘制在哪里?

任何人都可以解释我将如何绘制这个组件吗?

回答

3

Swing组件通常由其关联的UI类绘制。 UI类是特定于每个外观和感觉。这就是您如何让JSlider在不同平台上拥有“原生”的感觉,甚至是定制的感觉。每个Swing组件都有一个UI类,JSlider有SliderUI,它有几种风格,如:MetalSliderUI,WindowsSliderUI和SynthSliderUI。

您没有在JSlider中找到paint方法,因为paint方法位于父类JComponent中。 JComponent的绘画方法(paint,paintComponent,repaint等)会进行一些设置,但将工作委派给JSlider提供的UI类。在Swing中有一个完整的方法链,用于正确地绘制/确定组件的大小。

如果我们知道你在做什么,我们可能会帮助你。

+0

我创建了一个基于JPanel的愚蠢的多滑块。现在我只是好奇如何实施本地JSlider,但我没有找到绘制方法。我知道如果我绘制自己的组件,我必须重写paintComponent(Graphics g)。但会看看这些UI的东西。谢谢 – 2011-05-26 12:44:27

相关问题