java swing 超市购物系统代码
时间: 2023-08-10 13:03:22 浏览: 185
好的,以下是一个简单的 Java Swing 超市购物系统的示例代码:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Supermarket extends JFrame implements ActionListener {
private JLabel nameLabel, priceLabel, quantityLabel, totalLabel;
private JTextField nameField, priceField, quantityField, totalField;
private JButton addButton, checkoutButton;
private JList<String> cartList;
private DefaultListModel<String> cartModel;
public Supermarket() {
// 设置窗口标题
setTitle("超市购物系统");
// 创建商品信息标签和文本框
nameLabel = new JLabel("商品名称:");
priceLabel = new JLabel("商品单价:");
quantityLabel = new JLabel("商品数量:");
totalLabel = new JLabel("总价:");
nameField = new JTextField(10);
priceField = new JTextField(10);
quantityField = new JTextField(10);
totalField = new JTextField(10);
totalField.setEditable(false);
// 创建添加按钮和结算按钮
addButton = new JButton("添加到购物车");
checkoutButton = new JButton("结算");
// 创建购物车列表
cartModel = new DefaultListModel<>();
cartList = new JList<>(cartModel);
// 创建面板,并添加组件
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.LINE_START;
panel.add(nameLabel, c);
c.gridx = 1;
c.gridy = 0;
panel.add(nameField, c);
c.gridx = 0;
c.gridy = 1;
panel.add(priceLabel, c);
c.gridx = 1;
c.gridy = 1;
panel.add(priceField, c);
c.gridx = 0;
c.gridy = 2;
panel.add(quantityLabel, c);
c.gridx = 1;
c.gridy = 2;
panel.add(quantityField, c);
c.gridx = 0;
c.gridy = 3;
panel.add(totalLabel, c);
c.gridx = 1;
c.gridy = 3;
panel.add(totalField, c);
c.gridx = 0;
c.gridy = 4;
c.gridwidth = 2;
panel.add(addButton, c);
c.gridx = 0;
c.gridy = 5;
panel.add(checkoutButton, c);
// 添加组件到窗口
add(panel, BorderLayout.NORTH);
add(new JScrollPane(cartList), BorderLayout.CENTER);
// 注册按钮事件监听器
addButton.addActionListener(this);
checkoutButton.addActionListener(this);
// 设置窗口大小和可见性
setSize(400, 300);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addButton) {
// 添加商品到购物车
String name = nameField.getText();
double price = Double.parseDouble(priceField.getText());
int quantity = Integer.parseInt(quantityField.getText());
double total = price * quantity;
String item = String.format("%s (%d x %.2f = %.2f)", name, quantity, price, total);
cartModel.addElement(item);
totalField.setText(String.format("%.2f", getTotalPrice()));
clearFields();
} else if (e.getSource() == checkoutButton) {
// 结算购物车
double totalPrice = getTotalPrice();
JOptionPane.showMessageDialog(this, String.format("总价:%.2f", totalPrice));
cartModel.clear();
totalField.setText("");
}
}
private double getTotalPrice() {
double totalPrice = 0;
for (int i = 0; i < cartModel.getSize(); i++) {
String item = cartModel.getElementAt(i);
int start = item.indexOf('=') + 2;
int end = item.length() - 1;
double total = Double.parseDouble(item.substring(start, end));
totalPrice += total;
}
return totalPrice;
}
private void clearFields() {
nameField.setText("");
priceField.setText("");
quantityField.setText("");
}
public static void main(String[] args) {
new Supermarket();
}
}
```
在这个示例代码中,我们创建了一个 `Supermarket` 类,继承了 `JFrame` 类,实现了 `ActionListener` 接口。在构造方法中,我们创建了商品信息标签和文本框、添加按钮、结算按钮、购物车列表等组件,并将它们添加到窗口中。同时,我们还注册了按钮事件监听器,实现了添加商品到购物车和结算购物车的功能。
在 `actionPerformed` 方法中,我们根据事件源判断用户是点击了添加按钮还是结算按钮。如果是添加按钮,我们获取用户输入的商品信息,计算出总价,并将商品信息添加到购物车列表中。同时,我们还调用 `getTotalPrice` 方法计算购物车中所有商品的总价,并更新总价文本框的值。如果是结算按钮,我们调用 `getTotalPrice` 方法计算购物车中所有商品的总价,并弹出一个消息框显示总价。然后,我们清空购物车列表和总价文本框的值。
在 `getTotalPrice` 方法中,我们遍历购物车列表中的每个商品,计算出该商品的总价,并累加到 `totalPrice` 变量中。最后,返回总价。
在 `clearFields` 方法中,我们将商品名称、单价和数量文本框的值清空。
在 `main` 方法中,我们创建了一个 `Supermarket` 对象,启动了超市购物系统。
当然,这只是一个简单的示例代码,真正的超市购物系统需要考虑更多的功能和细节,如商品库存、优惠券、运费、地址、支付方式等等。但这个示例代码可以帮助您了解 Java Swing 的基本组件和事件处理机制。
阅读全文