为什么JComponent是Container的子类?

时间:2016-04-22 17:09:33

标签: swing awt class-hierarchy

班级javax.swing.JComponentjavax.awt.Container的直接子类,提供methods to add child components。虽然这对某些组件很有意义,例如JTableJTree,但对于JLabel来说似乎没有意义。据我从简单的实验中可以看出,JLabel的孩子被忽略了。

是否有充分的理由认为所有JComponent子类也是Container的子类,或者它只是过度热化子类化的遗留物?

1 个答案:

答案 0 :(得分:1)

  

为什么JComponent是Container的子类?

您可以将子组件添加到任何组件。您可能会获得与向面板添加组件时不同的行为,但可以完成。对于除JPanel之外的大多数组件,使用空布局。

  

虽然这对某些组件有意义,例如JTable或JTree,

为什么这么说呢。 JTable只是一个组件。 JTable的正常显示没有任何子组件。编辑单元格时,编辑器组件将添加到表格中,表格将管理组件的大小/位置。

  例如,它似乎对JLabel没有意义。据我从简单的实验中可以看出,JLabel的孩子被忽略了。

由于布局为null,您需要管理添加到标签的任何组件的大小/位置。

或者,您可以设置JLabel的布局管理器。请注意,标签的实际大小不包括子项,但您可以使用布局管理器将子项放在标签上。