因此,我製作了一個模擬星巴克應用程序,每次客戶點擊「訂購」按鈕時,產品都會添加到ArrayList中,並且此ArrayList將被所有人訪問。我有點糊塗在哪裏插入全球的ArrayList代碼...如何讓所有JFrames都可以訪問ArrayList以及如何更新它?
這是我的btnOrder代碼:
private void btnOrderActionPerformed(java.awt.event.ActionEvent evt) {
String name = lblName.getText();
String size = cmbSize.getSelectedItem().toString();
int quantity = (int) spnrQuantity.getValue();
int price=0;
if (size.equals("Tall 12oz")) {
price = 170;
} else if (size.equals("Grande 16oz")) {
price = 180;
} else if (size.equals("Venti 20oz")) {
price = 190;
}
Global.list.add(new Object());
new Receipt(name, size, quantity, price).setVisible(true);
}
這是我收到的幀代碼包含JTable的,所以我可以顯示訂單:
public class Receipt extends javax.swing.JFrame {
/**
* Creates new form Receipt
*/
public Receipt() {
initComponents();
}
String size, name;
int quantity, price;
public Receipt(String name, String size, int quantity, int price) {
initComponents();
this.name = name;
this.size = size;
this.quantity = quantity;
this.price = price;
addToTable();
}
void addToTable() {
DefaultTableModel table = (DefaultTableModel) tblCart.getModel();
Vector v = new Vector();
v.add(name);
v.add(size);
v.add(price);
v.add(quantity);
table.addRow(v);
}
這是可訪問的ArrayList代碼:
public class Global {
public static ArrayList<Object> list = new ArrayList<>();
private Global(){
}
}
全局狀態可能是一個噩夢來管理。您可以使用單例作爲經理,也可以將模型的實例傳遞給每個人。我會考慮的一件事是不直接暴露ArrayList,而是提供周圍的管理功能,這樣可以更好地控制對列表的訪問。模型方法將進一步允許您控制程序的哪些不同部分可以執行(爲什麼應允許自定義從列表中刪除元素?爲什麼brista能夠添加它們?)通過在接口上使用 – MadProgrammer
@MadProgrammer可以你請用簡單的英語說話嗎?英語不是我的第一個語言。謝謝 –
[程序接口沒有實現](http://stackoverflow.com/questions/2697783/what-does-program-to-interfaces-not-implementations-mean); [模型 - 視圖 - 控制器(https://blog.codinghorror.com/understanding-model-view-controller/); [單一責任原則](https://en.wikipedia.org/wiki/Single_responsibility_principle) – MadProgrammer