discountsgui.java
来自「ssd3 java编程 EXAM1 原样上传即可」· Java 代码 · 共 723 行 · 第 1/2 页
JAVA
723 行
initGUI();
}
/*
* Initialize the graphical user interface
*/
private void initGUI() {
// Populate catalog and customer database
for (Iterator i = store.getCatalog().getProductsIterator();
i.hasNext();) {
catalogListModel.addElement(
Integer.toString(((Product) i.next()).getCode()));
}
for (Iterator i = store.getCustomerDatabase().getCustomersIterator();
i.hasNext();) {
customerDatabaseListModel.addElement(
Integer.toString(((Customer) i.next()).getNumber()));
}
// set current order values
currentOrder = new DiscountOrder(
CURRENT_ORDER_CUSTOMER,
CURRENT_ORDER_DATE,
DefaultDiscountStrategy.getSingletonInstance());
yearTextField.setText(Integer.toString(CURRENT_ORDER_DATE.getYear()));
monthTextField .setText(Integer.toString(CURRENT_ORDER_DATE.getMonth()));
dayTextField.setText(Integer.toString(CURRENT_ORDER_DATE.getDay()));
totalTextField.setText(
dollarFormatter.format(
currentOrder.getTotalCostAfterDiscount()));
defaultDiscountButton.setSelected(true);
selectedProductsDiscountButton.setEnabled(false);
}
/**
* This inner class processes <code>addButton</code> events.
*/
class AddListener implements ActionListener {
/**
* Adds an order item to the current order.
*
* @param event the event object.
*/
public void actionPerformed(ActionEvent event) {
int quantity;
String code = (String) catalogList.getSelectedValue();
try {
quantity = Integer.parseInt(quantityTextField.getText());
} catch (NumberFormatException nfe) {
statusTextArea.setText("Please enter an integer.");
return;
}
if (quantity < 1) {
statusTextArea.setText("Please enter a positive integer.");
} else if (code == null) {
statusTextArea.setText(
"Please select a product code from the catalog list.");
} else {
Product product =
store.getCatalog().getProduct(Integer.parseInt(code));
OrderItem item = new OrderItem(product, quantity);
currentOrder.addOrderItem(item);
orderItemsListModel.addElement(item);
statusTextArea.setText("The product has been added.");
totalTextField.setText(dollarFormatter.format(
currentOrder.getTotalCostAfterDiscount()));
quantityTextField.setText("");
}
}
}
/**
* This inner class processes <code>deleteAllItemsButton</code>
* events.
*/
class DeleteAllItemsListener implements ActionListener {
/**
* Delete all the items in the current order.
*
* @param event the event object.
*/
public void actionPerformed(ActionEvent event) {
currentOrder = new DiscountOrder(
CURRENT_ORDER_CUSTOMER,
CURRENT_ORDER_DATE,
currentOrder.getDiscountStrategy());
orderItemsListModel.clear();
totalTextField.setText(dollarFormatter.format(0.0));
}
}
/**
* This inner class processes <code>loadProductsWithDiscountListener</code>
* events.
*/
class LoadProductsWithDiscountListener implements ActionListener {
/**
* Loads the selected products with a discount from a file.
*
* @param event the event object.
*/
public void actionPerformed(ActionEvent event) {
String fileName = fileNameTextField.getText();
try {
selectedProductsDiscountStrategy =
new SelectedProductsDiscountStrategy(
new ProductsCollection(
fileName,
store.getCatalog()));
statusTextArea.setText("The file " + fileName +
" has been loaded");
selectedProductsDiscountButton.setEnabled(true);
return;
} catch (FileNotFoundException fnfe) {
statusTextArea.setText("The file does not exist." + NEW_LINE +
"The selected products with discount has not been loaded.");
} catch (IOException ioe) {
statusTextArea.setText("Error reading from the file" +
NEW_LINE +
"The selected products with discount has not been loaded.");
} catch (DataFormatException dfe) {
statusTextArea.setText("Incorrect data in file." + NEW_LINE +
"The selected products with discount has not been loaded.");
}
selectedProductsDiscountStrategy = null;
selectedProductsDiscountButton.setEnabled(false);
}
}
/**
* 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.getNumberOfOrderItems() == 0) {
statusTextArea.setText("The order is empty.");
} else {
Customer customer;
String selectedCustomer =
(String) customerDatabaseList.getSelectedValue();
if (selectedCustomer == null) {
statusTextArea.setText(
"Please select a customer number.");
return;
} else {
try {
customer = store.getCustomerDatabase().getCustomer(
Integer.parseInt(selectedCustomer));
if (customer == null) {
statusTextArea.setText(
"The customer does not exist in the database.");
return;
}
} catch (NumberFormatException nfe) {
statusTextArea.setText(
"Invalid customer number.");
return;
}
}
int year;
int month;
int day;
try {
month = Integer.parseInt(monthTextField.getText());
if (month < 1 || month > 12) {
statusTextArea.setText(
"Invalid month. Please enter an integer between 1 and 12.");
return;
}
} catch (NumberFormatException nfe) {
statusTextArea.setText(
"Invalid month. Please enter an integer.");
return;
}
try {
day = Integer.parseInt(dayTextField.getText());
if (day < 1 || day > 31) {
statusTextArea.setText(
"Invalid day. Please enter an integer between 1 and 31.");
return;
}
} catch (NumberFormatException nfe) {
statusTextArea.setText(
"Invalid day. Please enter an integer.");
return;
}
try {
year = Integer.parseInt(yearTextField.getText());
if (year < 0) {
statusTextArea.setText(
"Invalid year. Please enter a positive integer.");
return;
}
} catch (NumberFormatException nfe) {
statusTextArea.setText(
"Invalid year. Please enter an integer.");
return;
}
DiscountOrder order = new DiscountOrder(
customer,
new Date(year, month, day),
currentOrder.getDiscountStrategy());
for (Iterator i = currentOrder.getOrderItemsIterator();
i.hasNext();) {
order.addOrderItem((OrderItem) i.next());
}
store.getSales().addOrder(order);
numberOfOrdersTextField.setText(
Integer.toString(store.getSales().getNumberOfOrders()));
statusTextArea.setText("The sale has been registered.");
currentOrder = new DiscountOrder(
CURRENT_ORDER_CUSTOMER,
CURRENT_ORDER_DATE,
currentOrder.getDiscountStrategy());
orderItemsListModel.clear();
totalTextField.setText(dollarFormatter.format(0.0));
}
}
}
/**
* 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 (store.getSales().getNumberOfOrders() == 0) {
statusTextArea.setText("No orders have been sold.");
} else {
statusTextArea.setText(formatSales(store.getSales()));
}
}
}
/**
* This inner class processes <code>defaultDiscountButton</code>events.
*/
class DefaultDiscountListener implements ActionListener {
/**
* Set the discount to apply to the current order.
*
* @param event the event object.
*/
public void actionPerformed(ActionEvent event) {
currentOrder.setDiscountStrategy(
DefaultDiscountStrategy.getSingletonInstance());
totalTextField.setText(dollarFormatter.format(
currentOrder.getTotalCostAfterDiscount()));
}
}
/**
* This inner class processes <code>allProductsDiscountButton</code> events.
*/
class AllProductsDiscountListener implements ActionListener {
/**
* Sets the discount to apply to the current order.
*
* @param event the event object.
*/
public void actionPerformed(ActionEvent event) {
currentOrder.setDiscountStrategy(
AllProductsDiscountStrategy.getSingletonInstance());
totalTextField.setText(dollarFormatter.format(
currentOrder.getTotalCostAfterDiscount()));
}
}
/**
* This inner class processes <code>selectedProductsDiscountButton</code>
* events.
*/
class SelectedProductsDiscountListener implements ActionListener {
/**
* Sets the discount to apply to the current order.
*
* @param event the event object.
*/
public void actionPerformed(ActionEvent event) {
currentOrder.setDiscountStrategy(selectedProductsDiscountStrategy);
totalTextField.setText(dollarFormatter.format(
currentOrder.getTotalCostAfterDiscount()));
}
}
/**
* Obtains a plain text representation of the specified sales information.
*
* @param sales the {@link Sales} object.
* @return a plain text representation of the specified
* {@link Sales} object.
*/
static private String formatSales(Sales sales) {
String out = "";
for (Iterator i = sales.getOrdersIterator(); i.hasNext();) {
out += ((Order) i.next()).toString() + NEW_LINE;
}
return out;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?