我只看了JSlider SourceCode的源代码 并且如果因为模板模式而发现了很多repaint()的预期。 但我的问题是我没有找到paint方法,它实际上描绘了JSlider。
有人可以解释一下这个组件是如何绘制的吗?
答案 0 :(得分:3)
Swing组件通常由其关联的UI类绘制。 UI类特定于每个外观。这就是让JSlider在不同平台上拥有“原生”感觉甚至是自定义感觉的方式。每个Swing组件都有一个UI类,JSlider有SliderUI,它有几种风格,如:MetalSliderUI,WindowsSliderUI和SynthSliderUI。
您在JSlider中找不到paint方法,因为paint方法位于父类JComponent中。 JComponent的绘制方法(paint,paintComponent,repaint等)进行一些设置,然后将工作委托给由JSlider提供的UI类。在Swing中有一个完整的方法链,用于正确地绘制/调整组件大小。
如果我们知道你想要做什么,我们可能会帮助你。