38

我一直想用 Java 创建自定义组件,或者自定义现有的组件,但我的搜索从未产生任何有用的结果。所以我决定问问 StackOverflow 社区:

在哪里可以找到有关自定义 Java GUI 组件的一般信息?

当我指的是定制时,我不是在谈论改变颜色、字体等。我的意思是真正定制它们。以下是两个样机示例组件:

自定义组件样机

笔记
我开始这个问题主要是为了找到如何创建上述两个自定义组件。但后来我意识到没有关于破解挥杆组件的普遍问题。所以我认为最好有一个资源列表。

如果您想知道模型中的两个组件是如何工作的,这里是:

一个自定义的 JScrollPane,每个方向都有两个滚动条。每个滚动条可以有不同的作用。例如,外部的滚动正常,内部的以更类似于 Picasa的方式移动视图。实际上,我从这里的 google groups 得到了一个有效的(!)答案,但这只是代码。

第二个是自定义的 JComboBox,当弹出列表展开时,它的末尾有一个 JComponent。这可以是任何东西,从带有图标的简单 JLabel 到以某种方式操作列表的 JButton。

但是这个问题与那些特定的组件无关。它是关于寻找资源(网站、书籍、文章等)来学习如何创建它们

4

6 回答 6

18

这篇文章How To Write a Custom Swing Component应该很有帮助。它涵盖了复制具有离散步骤和连续范围的 Windows 滑块控件。

于 2010-06-24T14:24:30.663 回答
15

JDK 是开源的。要了解如何编写 Swing 组件,没有比 Swing 组件的源代码更好的地方了。通常,当您创建自定义组件时,您会对以下一项或多项感兴趣:{交互语义、视觉表示、组合结构}

从最简单的情况开始:

被动组件:JLabel
交互组件:JButton

JLabel将演示JComponent用于自定义绘制组件的准系统扩展;在这种情况下,它正在绘制“文本”字符串值作为其表示。

JButton除了绘制组件之外,还将演示用于用户交互的准系统扩展。

于 2009-05-05T02:53:15.670 回答
10

《肮脏的富客户》是一本关于这个主题的优秀、可读性强的书。它更多是关于改进 Swing 组件的外观和感觉,而不是创建全新的组件,但它确实深入到了 Swing 的核心并提供了许多实际示例。

于 2009-05-07T05:21:51.973 回答
4

这是一个非常开放的问题,简短的回答是您JComponent继承或其中一个后代并添加您需要的功能。显然,根据您想要执行的操作,难度可能会有所不同。对于初学者,我建议您阅读 Sun关于使用 Swing 组件的教程,其中包含有关如何使用滚动窗格弹出菜单的示例。一旦您通读了这些并进行了实验,您可能会遇到更具体的问题,人们更容易提供经过深思熟虑的答案。

如果您的模型中的两个组件都是您想要实现的,那么让我们更好地了解您希望它们如何运作将产生更好的答案。

于 2009-05-05T01:47:28.527 回答
2

我个人认为上述答案过于笼统或含糊。另外,由于有人不可避免地会像我一样碰到这个线程,我不妨提供我发现的内容:

希望这可以帮助...

于 2013-04-23T16:30:10.603 回答
1

阅读Swing Hacks:构建杀手 GUI 的技巧和工具(Marinacci,Adamson)。恕我直言,这是一本有效使用 Swing 的必备书籍。

于 2009-05-05T05:07:59.510 回答