📄 exercise 8.gourmetcoffeegui.java
字号:
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 + -