2011-05-26 19 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

相關問題