4

我正在为我的应用程序使用 Synth 实现自定义外观 - 基本上提供 SynthStyle、SynthPainter 和 SynthStyleFactory 的自定义版本。

没有使用任何 XML,即一切都是通过 Java API 完成的。一般来说,这工作得很好。

然而,设置适当插图的最佳方法有点棘手。我可以看到各种选项:

  • 覆盖 SynthStyle 的 getInsets 以返回每个区域的特定插图
  • 使用 SynthStyle.installDefaults 为组件应用边框
  • 将所有插图设置为 (0,0,0,0) 并在绘画方法中进行补偿
  • 创建新的 ComponentUI 委托

什么是最好的方法,为什么?

4

1 回答 1

1

您对此做出决定了吗?以下是我对事情的看法...

getInsets()如果您有一个带有少量上下文的简单样式,覆盖看起来是一个不错的解决方案。它应该有助于在整个 GUI 中保持插图的一致性,只需进行一点更改。

为此目的,对组件应用空边框似乎有点骇人听闻。如果您需要将自定义边框应用于组件,那么您可能会无意中删除空边框,除非您覆盖setBorder()使用复合边框的方法。

将所有插图设置为 0 是不必要的,因为它们已经从 0 开始......我会非常害怕重写绘画方法的想法!这通常是为了给组件添加最后的润色,而不是重新定义它们的整个边界。

我不完全确定创建一个新的ComponentUI会有什么帮助,因为这主要与尺寸和绘画有关(如上)。

我会首先尝试选项 1,因为它会对您的应用程序产生全局影响,然后开始计算您想要放入其中的异常和上下文。

于 2011-02-22T16:50:15.840 回答