如何访问添加到 JPanel 中但尚未声明的摆动组件?



如果我将一个组件(比如 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更难维护。

最新更新