我正在使用 Synth 为我的应用程序实现自定义外观 - 主要是提供自定义版本的 SynthStyle、SynthPainter 和 SynthStyleFactory。
我不使用任何 XML,即一切都是通过 Java API 完成的。一般来说,这工作得很好。
然而,设置适当的插图的最佳方式被证明有点棘手。我可以看到各种选项:
- 重写 SynthStyle 的 getInsets 以返回每个区域的特定插图
- 使用 SynthStyle.installDefaults 为组件应用边框
- 将所有插图设置为 (0,0,0,0) 并在绘画方法中进行补偿
- 创建新的 ComponentUI 委托(delegate)
什么是最好的方法,为什么?
最佳答案
你决定了吗?这是我对事情的看法...
覆盖 getInsets()
看起来是一个不错的解决方案,如果您有一个简单的样式和少量的上下文。它应该有助于使整个 GUI 中的插图保持一致,只需更改一个点。
为此目的,将空边框应用于组件似乎有点老套。如果您需要将自定义边框应用于组件,那么您可能会无意中删除空边框,除非您重写 setBorder()
方法以使用复合边框。
将所有 insets 设置为 0 是不必要的,因为它们已经从 0 开始了......我一想到重写绘制方法就会非常害怕!这通常是为了对组件进行最后润色,而不是重新定义它们的整个边界。
我不完全确定创建新的 ComponentUI
会有什么帮助,因为这主要与调整大小和绘画有关(如上所示)。
我会首先尝试选项 1,因为它会对您的应用程序产生全局影响,然后开始计算您想要放入其中的异常和上下文。
关于java - 用于自定义 Synth 外观和感觉的插图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196005/