我正在尝试构建一个新的java swing组件,我意识到我可能能够找到一个在网络上做我需要的东西,但这部分是我练习学习这项工作的练习。
我想构建一个代表甘特图的摇摆组件。它会很好(虽然不是必须让人们能够与它互动(例如滑动任务以调整时间)
感觉最好的方法是将JComponent
子类化,并覆盖PaintComponent()
以“绘制图片”应该是什么样子的图片,而不是像尝试堵塞一样一切都变成了自定义JTable
。
我已经阅读了几本关于这个主题的书,并且还看了几个例子(最值得注意的是像JXGraph这样的东西) - 但我对一些事情感到好奇
我什么时候必须切换到使用UI代表,何时可以坚持在paintcomponent
()中摆弄以呈现我想要的内容?
如果我想将其他swing组件作为我组件的子元素(例如我想在我的甘特图上添加一个文本框)
-Ace
答案 0 :(得分:10)
我认为我几年前为java.net撰写的the article今天仍然是正确的。在一个单一的类中做所有事情会让你在开始时变得更快,但是变得非常快。我强烈建议在模型(在主类中)和视图(UI委托)之间进行分离。视图负责:
从中期和长期来看,这是在Flamingo component suite中一遍又一遍地验证的方法,您可以将其用作额外的参考点(除了核心Swing组件的实现方式)。
答案 1 :(得分:4)
如果您认为您的组件对于不同的外观和感觉看起来不同,那么使用UI委托是个好主意。从设计的角度来看,将演示文稿与组件分开
即使覆盖paintComponent,您仍然可以在其上放置任何子组件。
这对你来说非常好starting point。