import java.util.ArrayList; import java.util.List; import javax.swing.*; import java.awt.*; import java.awt.event.*; class ShoppingListModel { private final List shoppingList = new ArrayList<>(); public void addItem(String item) { shoppingList.add(item); } public List getShoppingList() { return shoppingList; } } class ShoppingListView { private ShoppingListController controller = null; private final DefaultListModel shoppingList; private final JTextField inputField; private final JList itemList; public ShoppingListView() { try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { System.exit(1); } shoppingList = new DefaultListModel<>(); JFrame frame = new JFrame("Shopping List"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); inputField = new JTextField(20); JButton addButton = new JButton("Add"); addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { controller.addItem(inputField.getText()); inputField.setText(""); inputField.requestFocusInWindow(); } }); itemList = new JList<>(shoppingList); JScrollPane scrollPane = new JScrollPane(itemList); JPanel panel = new JPanel(new BorderLayout()); panel.add(inputField, BorderLayout.NORTH); panel.add(addButton, BorderLayout.CENTER); panel.add(scrollPane, BorderLayout.SOUTH); frame.add(panel); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void updateItemListView(List items) { shoppingList.clear(); for(String item : items) { shoppingList.addElement(item); } } public void setController(ShoppingListController controller) { this.controller = controller; } } class ShoppingListController { private final ShoppingListModel model; private final ShoppingListView view; public ShoppingListController(ShoppingListModel model, ShoppingListView view) { this.model = model; this.view = view; } public void addItem(String item) { if (item != null && !item.strip().isEmpty()) { model.addItem(item.strip()); updateView(); } } private void updateView() { List shoppingList = model.getShoppingList(); view.updateItemListView(shoppingList); } } class ShoppingListApp { public static void main(String[] args) { ShoppingListModel model = new ShoppingListModel(); ShoppingListView view = new ShoppingListView(); ShoppingListController controller = new ShoppingListController(model, view); view.setController(controller); } }