如何创建自定义Swing组件

pek*_*pek 37 java swing jcomponent

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

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

当我的意思是定制时,我不是在谈论改变颜色,字体等等.我的意思是真正定制它们.这是两个模型示例组件:

自定义组件样机

注释
我开始这个问题主要是为了找到如何创建上面两个自定义组件.但后来我意识到关于黑客摇摆组件的问题并不存在.所以我认为最好有一份资源清单.

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

一个自定义的JScrollPane,每个方向都有两个Scrollbar.每个滚动条的行为都不同.例如,外部滚动正常,内部滚动以类似Picasa的方式移动视图.事实上,我从谷歌组工作(!)答案在这里,但那只是代码.

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

但这个问题不是关于那些具体的组成部分.它是关于寻找资源(网站,书籍,文章等)来学习如何创建它们.

Joh*_*n K 18

本文,如何编写自定义Swing组件应该是非常有用的.它包括复制具有离散步骤和连续范围的Windows滑块控件.

  • 此链接已过期.虽然实际页面仍然存在,但您会发现页面中的图像和链接都缺失了.有没有人有更新的链接?此外,通常,在SO上,我们将链接中的相关内容精确地放在链接变得过时的情况下. (3认同)

alp*_*ero 15

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

从最简单的情况开始:

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

JLabel将展示JComponent组件自定义绘图的准系统扩展; 在这种情况下,它绘制'text'字符串值作为其表示.

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

  • 在阅读Swing代码时要记住几个注意事项:为了向后兼容,有很多代码; 大多数实际的图形代码都在UI类中; Swing课程已经"发展",并不一定代表最佳实践. (6认同)

Ama*_*a S 10

Filthy Rich Clients是一本关于这个主题的优秀,非常易读的书.它更多的是改进Swing组件的外观和感觉,而不是创建全新的组件,但它确实进入了Swing的内部并提供了许多实际的例子.