如果我将一个组件(比如 JLabel(添加到 JPanel 而不声明它,有没有办法在实例化后访问 JLabel? 我正在尝试设置组件的对齐方式,但即使通过getComponent((也无法访问setAlignmentX((方法。
testPanel.add(new JLabel("test label"));
testPanel.getComponent(0).setAlignmentX(Component.CENTER_ALIGNMENT);
我尝试过getComponent((,但setAlignmentX((方法无法解析,导致我相信getComponent((方法没有正确返回JLabel,可能是因为我从未正式声明过它。 我没有向 JPanel 添加任何其他组件。 我知道我总是可以在将 JLabel 添加到 JPanel 之前声明它,但我宁愿只添加new JLabel("test label")
,而不是在添加之前声明一个。
如您所提到的,首先声明JLabel
可能被认为是最佳实践,但要回答您的问题......
该方法getComponent(int)
返回一个java.awt.Component
,而不是JComponent
(也不是JLabel
(。Component
没有这样的方法setAlignmentX
(它只有一个吸气剂(。
假设您确定您获得的组件是JLabel
,则必须强制转换它:
((JLabel)testPanel.getComponent(0)).setAlignmentX(Component.CENTER_ALIGNMENT);
您可能会发现,在任何地方通用化这种必要的强制转换比仅首先声明JLabel
更难维护。