【问题标题】:Where will the JSlider actually be painted?JSlider 将实际绘制在哪里?
【发布时间】:2011-09-02 13:34:32
【问题描述】:

我刚刚查看了来自 JSlider SourceCode 的源代码 如果发现了很多 repaint() 的预期,因为模板模式。 但我的问题是我没有找到实际绘制 JSlider 的绘制方法。

谁能解释一下这个组件是如何绘制的?

【问题讨论】:

    标签: java swing components paint


    【解决方案1】:

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

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

    如果我们知道您想要做什么,我们或许可以帮助您。

    【讨论】:

    • 我基于 JPanel 创建了一个愚蠢的多滑块。现在我只是好奇原生的JSlider是如何实现的,但是我没有找到paint方法。我知道如果我绘制一个自己的组件,我必须覆盖paintComponent(Graphics g)。但是会看看这些 UI 的东西。谢谢
    猜你喜欢
    • 2018-02-07
    • 2017-09-24
    • 2016-04-22
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多