Swing 为什么JComponent是容器的子类?

Swing 为什么JComponent是容器的子类?,swing,awt,class-hierarchy,Swing,Awt,Class Hierarchy,该类是的一个直接子类,它提供了。虽然这对于某些组件(如或)是有意义的,但对于(例如)来说似乎没有意义。从简单的实验中我可以看出,一个JLabel的孩子被忽略了 所有JComponent子类都是Container的子类,这是一个很好的理由吗?还是它只是过度热衷于子类化的时代的遗物 为什么JComponent是容器的子类 可以将子组件添加到任何组件。您可能会得到与向配电盘添加组件不同的行为,但这是可以做到的。对于大多数组件(JPanel除外),都使用空布局 虽然这对于某些组件(如JTable或JTr

该类是的一个直接子类,它提供了。虽然这对于某些组件(如或)是有意义的,但对于(例如)来说似乎没有意义。从简单的实验中我可以看出,一个
JLabel
的孩子被忽略了

所有
JComponent
子类都是
Container
的子类,这是一个很好的理由吗?还是它只是过度热衷于子类化的时代的遗物

为什么JComponent是容器的子类

可以将子组件添加到任何组件。您可能会得到与向配电盘添加组件不同的行为,但这是可以做到的。对于大多数组件(JPanel除外),都使用空布局

虽然这对于某些组件(如JTable或JTree)是有意义的

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

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

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

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