好的,所以我有這個 JFrame 框架,我正在嘗試將所有組件加載到 JLabel ArrayList 中。該框架有一個 LayeredPane 和大約 20 個 JLabel 分散在各處。其中一些具有不同的 z-index/layer 索引
ArrayList<JLabel> labelList = new ArrayList<>();
for(Component i : frame.getComponents() ) {
if (i instanceof JLabel) {
labelList.add((JLabel) i);
}
}
System.out.println(labelList);
但是當我嘗試列印出 ArrayList 時,它只會列印一個空陣列。
當我將滑鼠懸停在 .getComponents() 上時,它實際上表明所有 JLabel 實際上都包含在該方法中。
而且它也不會給出任何錯誤,例如 Component 無法轉換為 JLabel 等。
編輯:我按照@camickr 的建議做了,它表明只有 contentPane 被抓取。我可能誤解了 .getComponents() 的作業原理。
edit2 只是將代碼更改為:
ArrayList<JLabel> labelList = new ArrayList<>();
for(Component i : layeredPane.getComponents() ) { //layeredPane being the name of the JLayeredPane, suprisingly
labelList.add((JLabel) i);
}
System.out.println(labelList.toArray().length);
它有效。我是一個非常愚蠢的人。
uj5u.com熱心網友回復:
ArrayList<JLabel> labelList = new ArrayList<>();
for(Component i : layeredPane.getComponents() ) { //layeredPane being the name of the JLayeredPane, suprisingly
labelList.add((JLabel) i);
}
System.out.println(labelList.toArray().length);
是解決方案。由于我試圖從框架中抓取所有內容,因此它不起作用,但框架上唯一的東西是分層窗格,所有其他組件都在其中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/416537.html
標籤:
