Java 自定义Swing组件:关于方法的问题
我正在尝试构建一个新的JavaSwing组件,我意识到我可能能够找到一个在web上实现我所需要的功能的组件,但这对我来说是一个学习如何实现这一点的练习 我想构建一个表示甘特图的swing组件。这会很好(虽然对人们能够与之互动不是必需的(例如,滑动任务以调整时间) 感觉最好的方法是将Java 自定义Swing组件:关于方法的问题,java,swing,components,Java,Swing,Components,我正在尝试构建一个新的JavaSwing组件,我意识到我可能能够找到一个在web上实现我所需要的功能的组件,但这对我来说是一个学习如何实现这一点的练习 我想构建一个表示甘特图的swing组件。这会很好(虽然对人们能够与之互动不是必需的(例如,滑动任务以调整时间) 感觉最好的方法是将JComponent子类化,并覆盖PaintComponent()以“绘制”图表的外观,而不是尝试将所有内容都塞进自定义JTable 我读过几本关于这个主题的书,也看过一些例子(最著名的是像JXGraph之类的东西)—
JComponent
子类化,并覆盖PaintComponent()
以“绘制”图表的外观,而不是尝试将所有内容都塞进自定义JTable
我读过几本关于这个主题的书,也看过一些例子(最著名的是像JXGraph之类的东西)——但我对一些事情很好奇
- 什么时候我必须切换到使用UI委托,什么时候我可以坚持在
()中摆弄来呈现我想要的东西paintcomponent
- 如果我希望其他swing组件作为组件的子元素(例如,我希望甘特图上有一个文本框)
- 我可以不再使用paintComponent()吗
- 我可以在甘特图中任意定位它们,还是必须使用普通的swing布局管理器
- 如果您认为您的组件应该因不同的外观和感觉而看起来不同,那么使用UI委托是一个好主意。从设计的角度来看,将您的演示文稿与组件分离通常也是一个好主意
- 即使在覆盖paintComponent时,您仍然可以在其上放置任何子组件
- 使用空布局可以任意定位组件。或者也可以使用布局
- 与用户交互-鼠标、键盘等
- 绘画
- 根据需要创建“工作者”子组件
从中长期来看,这是一种在中反复验证的方法,您可以将其用作额外的参考点(除了核心Swing组件的实现方式)。是的……仅在Kirill发布答案前2小时:)