-1
我已經定義了一個全局ArrayList itemList
,它可以通過一個不同的類來訪問。我已通過actionPerformed
爲其分配值,並且可以在該方法中訪問它。但是,當我嘗試訪問方法之外的數據時,它將變爲null
。我如何設置和訪問方法之外的數據?這是代碼。訪問全局變量inPerformed
public void addMainBtn() {
for(int i=0;i < mainMenu.size();i++) {
mainPane.setLayout(new GridLayout(0,1));
JButton mainBtn = new JButton(mainMenu.get(i).item_name+" - "+mainMenu.get(i).item_price);
//mainAction mainBtnAct = new mainAction(mainMenu.get(i).item_name, mainMenu.get(i).item_price);
mainBtn.addActionListener(this);
mainPane.add(mainBtn);
}
}
public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
String[] outputItem = str.split("-");
double outputPrice = Double.parseDouble(outputItem[1]);
storeArray.itemList.add(outputItem[0]);
storeArray.priceList.add(outputPrice);
}
public void printall() {
for (int i = 0; i < test.size(); i++) {
System.out.println(storeArray.itemList.get(i).toString());
}
}
基本上這是第一種方式的糟糕設計。直接訪問不同課程中的字段可將您與該領域的實施聯繫起來。此外,你在這裏混合圖層。一層處理UI事件;然後有一個層管理你正在處理的數據。至少:將另一個班級變成一個單身人士;並在其上放置(同步)方法,如「添加新項目」。並編寫單元測試;那麼您可以確保每個組件實際上按預期工作,然後再開始將「更大」的組件組合在一起。 – GhostCat
最後 - 如果你想得到有用的答案,那麼你必須提供更多的代碼。這裏沒有人知道storeArray是從哪裏來的;它是如何初始化的;以及itemList和priceList如何初始化。 – GhostCat
謝謝Jagermeister, – RLim