2009-05-05 170 views
33

我一直想用Java创建自定义组件,或者自定义现有组件,但是我的搜索从未导致任何有用的东西。所以我决定询问StackOverflow社区:如何创建自定义Swing组件

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

而当我的意思是定制,我不是在说改变颜色,字体等我的意思是真的定制它们。这里有两个例子样机部件:

Custom Components Mockup

注意
我开始这个问题主要是了解如何创建上述两个自定义组件。但后来我意识到,关于黑客摆动组件的问题还没有一个普遍的问题。所以我认为最好有一份资源清单。

如果你想知道如何在样机的工作做的两个组成部分,在这里它是:

定制的JSc​​rollPane中有两个滚动条每个方向。每个滚动条的行为可能不同。例如,外部的滚动条正常滚动,内部的滚动条以更类似于滚动的方式移动视图。我实际上得到了谷歌组织here的工作(!)答案,但那只是代码。

第二个是自定义的JComboBox,当弹出列表展开时,最后有一个JComponent。这可以是任何事情,从带图标的简单JLabel到以某种方式操纵列表的JButton。

但这个问题不是关于那些特定的组件。这是关于找到资源(网站,书籍,文章等),以了解如何创建它们

+10

我刚刚注意到,sceenshot说:“jbomponent” ...:P – pek 2010-11-06 10:52:20

回答

4

这是一个相当开放的问题,简单的答案是你可以继承JComponent或它的一个后代并添加你需要的功能。显然,取决于你想做什么,这可能会有所不同。对于初学者,我建议您阅读Sun的tutorial on using Swing components,其中有关于如何使用scroll panes和的示例。一旦你通读了这些内容并进行了实验,你可能会有更具体的问题,让人们更容易提供相关答案。

如果你模拟的两个组件都是你想要实现的,那么给我们一些关于你希望它们如何工作的更好的想法会产生更好的答案。

+0

我已阅读Java教程(当它涉及到Swing总是这样),但它并不像我需要的那么深。 – pek 2009-05-05 02:15:51

+0

你能更具体地解释你需要什么吗?您是否想具体了解如何实现您在问题中嘲弄的功能,还是想要更一般化的问题? – ninesided 2009-05-05 02:31:15

15

JDK是开源的。要了解如何编写Swing组件,没有比Swing组件的源更好的地方。在一般情况下,当您创建自定义组件,你有兴趣在一个或多个以下:{交互语义,视觉表现,组成结构}

先从最简单的情况:

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

JLabel将演示JComponent的准系统扩展以用于定制绘图组件;在这种情况下,它将绘制“text”字符串值作为其表示形式。

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

+5

在阅读Swing代码时要牢记几个注意事项:为了向后兼容,存在大量的代码;大部分实际的图形代码都在UI类中; Swing类已经“发展”了,并不一定代表最佳实践。 – 2011-07-27 02:36:44

+0

组件代码的网页地址 – 2014-05-05 17:38:38

9

Filthy Rich Clients是一本关于此主题的出色的,可读性强的书。更重要的是改进Swing组件的外观和感觉,而不是创建全新的组件,但它确实深入Swing的内涵并提供了大量实用示例。