⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exercise 8.gourmetcoffeegui.java

📁 CMU SSD3 课程完整答案(除EXAM)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			jl.setText(df.getName() + " :");
			jtf.setText(df.getValue());
			jtf.setEditable(false);

			left.add(jl);
			right.add(jtf);
		}

		result.add(left, BorderLayout.WEST);
		result.add(right, BorderLayout.EAST);

		return result;
	}

	/**
	 * This inner class handles list-selection events.
	 */
	class DisplayProductListener implements ListSelectionListener {

		/**
		 * Displays the information of the selected product.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void valueChanged(ListSelectionEvent event) {

			if (!catalogList.getValueIsAdjusting()) {

				String code = (String) catalogList.getSelectedValue();
				Product product = catalog.getProduct(code);

				productPanel.removeAll();
				productPanel.setVisible(false); // Use this
				productPanel.add( // to update
						getDataFieldsPanel(product.getDataFields())); // the
				// panel
				productPanel.setVisible(true); // correctly

				statusTextArea.setText("Product " + code
						+ " has been displayed");
			}
		}
	}

	/**
	 * This inner class processes <code>addModifyButton</code> events.
	 */
	class AddModifyListener implements ActionListener {

		/**
		 * Adds an order item to the current order.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			int quantity = 0;
			try {
				quantity = Integer.parseInt(quantityTextField.getText());
			} catch (NumberFormatException nfe) {
				statusTextArea.setText("Please enter an integer.");
				return;
			}
			if (quantity <= 0) {
				statusTextArea.setText("Please enter a positive integer.");
				return;
			}

			String code = (String) catalogList.getSelectedValue();
			if (code == null) {
				statusTextArea
						.setText("Please select a product code from the catalog list.");
				return;
			}

			Product product = catalog.getProduct(code);
			if (currentOrder.getItem(product) == null) {
				currentOrder.addItem(new OrderItem(product, quantity));
			}

			for (Iterator<OrderItem> i = currentOrder.iterator(); i.hasNext();) {
				OrderItem orderItem = i.next();
				if (orderItem.getProduct().equals(product)) {
					orderItem.setQuantity(quantity);
				}
			}

			orderList.setVisible(false);
			orderList.removeAll();
			orderList.setListData(currentOrder.getItems());
			orderList.setVisible(true);

			statusTextArea.setText("The product has been added.");
			totalTextField.setText(dollarFormatter.format(currentOrder
					.getTotalCost()));
		}
	}

	/**
	 * This inner class processes <code>removeButton</code> events.
	 */
	class RemoveListener implements ActionListener {

		/**
		 * Removes an order item from the current order.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			if (orderList.getSelectedValue() == null) {
				statusTextArea.setText("The order is empty.");
				return;
			}

			if (!orderList.getValueIsAdjusting()) {

				Product product = ((OrderItem) orderList.getSelectedValue())
						.getProduct();

				for (Iterator<OrderItem> i = currentOrder.iterator(); i
						.hasNext();) {

					OrderItem orderItem = i.next();
					if (orderItem.getProduct().equals(product)) {

						i.remove();

						orderList.removeAll();
						orderList.setVisible(false);
						orderList.setListData(currentOrder.getItems());
						orderList.setVisible(true);

						totalTextField.setText(dollarFormatter
								.format(currentOrder.getTotalCost()));
						statusTextArea.setText("The product has been removed.");

						return;
					}
				}
			}
		}
	}

	/**
	 * This inner class processes <code>registerSaleButton</code> button
	 * events.
	 */
	class RegisterSaleListener implements ActionListener {

		/**
		 * Registers the sale of the current order.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			if (currentOrder.getNumberOfItems() == 0) {
				statusTextArea.setText("The order is empty.");
			} else {
				sales.addOrder(currentOrder);
				currentOrder = new Order();
				orderList.setListData(currentOrder.getItems());
				totalTextField.setText(dollarFormatter.format(0));
				statusTextArea.setText("The sale has been registered.");
			}
		}
	}

	/**
	 * This inner class processes <code>displaySalesButton</code>events.
	 */
	class DisplaySalesListener implements ActionListener {

		/**
		 * Displays the sales information.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			if (sales.getNumberOfOrders() == 0) {
				statusTextArea.setText("No orders have been sold.");
			} else {
				statusTextArea.setText(salesFormatter.formatSales(sales));
			}
		}
	}

	/*
	 * This inner class processes <code>saveSalesButton</code> events.
	 */
	class SaveSalesListener implements ActionListener {

		/**
		 * Saves the sales informations in a file.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			if (sales.getNumberOfOrders() == 0) {
				statusTextArea.setText("No orders have been sold.");
				return;
			}

			int result = fileChooser.showOpenDialog(null);

			if (result == JFileChooser.APPROVE_OPTION) {

				try {

					File file = fileChooser.getSelectedFile();
					PrintWriter fileOut = new PrintWriter(new FileWriter(file));
					fileOut.println(salesFormatter.formatSales(sales));
					fileOut.close();

					statusTextArea
							.setText("The sales information has been saved.");

				} catch (IOException ioe) {
					statusTextArea.setText("Error: Problem with I/O");
				}

			} else if (result == JFileChooser.CANCEL_OPTION) {
				statusTextArea
						.setText("The sales information has not been saved.");
			}
		}
	}

	/*
	 * This inner class processes <code>plainRadioButton</code> events.
	 */
	class PlainListener implements ActionListener {

		/**
		 * Sets the sales formatter to plain text.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			salesFormatter = PlainTextSalesFormatter.getSingletonInstance();
		}
	}

	/*
	 * This inner class processes <code>HTMLRadioButton</code> events.
	 */
	class HTMLListener implements ActionListener {

		/**
		 * Sets the sales formatter to HTML.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			salesFormatter = HTMLSalesFormatter.getSingletonInstance();
		}
	}

	/*
	 * This inner class processes <code>XMLRadioButton</code> events.
	 */
	class XMLListener implements ActionListener {

		/**
		 * Sets the sales formatter to XML.
		 * 
		 * @param event
		 *            the event object.
		 */
		public void actionPerformed(ActionEvent event) {

			salesFormatter = XMLSalesFormatter.getSingletonInstance();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -