我正在构建一个自定义的swing组件(更像是一个实际的思想实验)。自定义swing组件:重绘问题()
我遇到了重新绘制的问题。我的组件具有jtree
,一个jtable
,然后就是完全自定义的画的一部分(希望结束了相当MS项目式的ganttview)
的具体问题是,当JTree的扩大,表和甘特视图应更新以反映新扩展的treenode下的新子项目。他们这样做,但尺寸不更新,所以表格不显示额外的行,而且我的gannt显示也没有使用完整的高度。
奇怪的是,如果我触摸jframe
上的窗口句柄(所以即使是1px调整大小) - 这似乎强制完全刷新,然后组件显示正常,中间的表格和gannt正确填满显示屏。
如果我不做调整大小,那么当树中的节点展开/折叠时调用repaint,因为我看到ganttview更新,但它看起来并没有展开占据整个高度屏幕。
我已经在下面的屏幕截图中显示了resize()后的正确显示,下半部分是我看到如果我不扩大节点而不进行调整大小。
我的断言是,组件知道如何正确重绘()它本身,因为它在调整大小上做了正确的事情,但是这必须触发一个特殊事件来强制更新。我尝试过各种组合update
(),invalidate
(),repaint
(),但似乎无法模拟父窗体调整大小时发生的完整repaint
()。
感谢,王牌
很多谢谢,这样做的伎俩 – phatmanace 2011-01-27 22:56:02