慕尼黑8549860
2023-03-17 13:49:46
我正在嘗試使用 Swing 創建一個用戶界面,但我不想手動將每個組件包含在我的組件數組中。到目前為止,我得到的最好的嘗試拋出了一個異常,這是我不能真正擁有的。for (Field f : this.getClass().getFields()) { if (f.getType().isAssignableFrom(JComponent.class)) { JComponent field = (JComponent) f.get(JComponent.class); components.add(field); }}我希望我展示的代碼不包含任何異常,但確實如此。有沒有辦法在沒有異常風險的情況下做到這一點?
1 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
reflect當不一定需要時,不應使用離子用法。大多數時候,創建 a 的原因component是將其添加到容器中。將其添加到那里后,您可以使用方法輕松地從容器中詢問他們Container#getComponents。
檢查這個例子:
JButton loadButton = new JButton("load");
JButton saveButton = new JButton("save");
JPanel panel = new JPanel();
panel.add(loadButton);
panel.add(saveButton);
for (Component component : panel.getComponents()) {
// ...
}
為了給你更多的幫助,你必須告訴我們你想用這個數組做什么。我的意思是,你想在哪里使用它?
如果您堅持使用它,則for應該是:
for (Field f : this.getClass().getDeclaredFields()) {
if (JComponent.class.isAssignableFrom(f.getType())) {
JComponent field = (JComponent) f.get(this);
components.add(field);
}
}
添加回答
舉報
0/150
提交
取消