Java可视化商品查询器文件实现
时间: 2023-11-22 21:52:25 浏览: 151
Java可视化商品查询器主要分为以下几个文件:
1. `Main.java`:程序的入口文件,包含了主函数和用户界面的实现;
2. `Product.java`:商品类,包含了商品的相关属性和方法;
3. `ProductList.java`:商品列表类,包含了商品的集合以及商品的添加、删除、查询等操作;
4. `ProductView.java`:商品展示类,用于展示商品的信息;
5. `ProductController.java`:商品控制器类,用于控制商品的添加、删除、查询等操作。
下面是一个简单的实现,仅供参考:
```java
// Main.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main extends JFrame {
private ProductList productList;
private JTextField textFieldName;
private JTextField textFieldPrice;
private JTextArea textAreaResult;
public Main() {
super("商品查询器");
// 初始化商品列表
productList = new ProductList();
// 设置窗口大小和位置
setSize(500, 400);
setLocationRelativeTo(null);
// 设置窗口布局
setLayout(new BorderLayout());
// 创建顶部面板
JPanel panelTop = new JPanel(new GridLayout(2, 2));
panelTop.add(new JLabel("商品名称"));
textFieldName = new JTextField();
panelTop.add(textFieldName);
panelTop.add(new JLabel("商品价格"));
textFieldPrice = new JTextField();
panelTop.add(textFieldPrice);
// 创建中间面板
JPanel panelCenter = new JPanel(new BorderLayout());
textAreaResult = new JTextArea();
panelCenter.add(textAreaResult, BorderLayout.CENTER);
// 创建底部面板
JPanel panelBottom = new JPanel(new FlowLayout());
JButton buttonAdd = new JButton("添加商品");
buttonAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的商品名称和价格
String name = textFieldName.getText();
double price = Double.parseDouble(textFieldPrice.getText());
// 添加商品到商品列表
productList.add(new Product(name, price));
// 清空用户输入框
textFieldName.setText("");
textFieldPrice.setText("");
}
});
JButton buttonDelete = new JButton("删除商品");
buttonDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的商品名称
String name = textFieldName.getText();
// 删除商品,并返回删除的商品数量
int count = productList.delete(name);
// 显示删除结果
textAreaResult.setText("已删除 " + count + " 个商品");
}
});
JButton buttonQuery = new JButton("查询商品");
buttonQuery.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的商品名称
String name = textFieldName.getText();
// 查询商品,并返回查询结果
Product[] products = productList.query(name);
// 显示查询结果
textAreaResult.setText("");
for (Product product : products) {
textAreaResult.append(product.toString() + "\n");
}
}
});
panelBottom.add(buttonAdd);
panelBottom.add(buttonDelete);
panelBottom.add(buttonQuery);
// 将面板添加到窗口中
add(panelTop, BorderLayout.NORTH);
add(panelCenter, BorderLayout.CENTER);
add(panelBottom, BorderLayout.SOUTH);
// 显示窗口
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
```
```java
// Product.java
public class Product {
private String name;
private double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public String toString() {
return "商品名称:" + name + ",商品价格:" + price;
}
}
```
```java
// ProductList.java
import java.util.ArrayList;
public class ProductList {
private ArrayList<Product> products;
public ProductList() {
products = new ArrayList<>();
}
public void add(Product product) {
products.add(product);
}
public int delete(String name) {
int count = 0;
for (Product product : products) {
if (product.getName().equals(name)) {
products.remove(product);
count++;
}
}
return count;
}
public Product[] query(String name) {
ArrayList<Product> result = new ArrayList<>();
for (Product product : products) {
if (product.getName().equals(name)) {
result.add(product);
}
}
return result.toArray(new Product[result.size()]);
}
}
```
```java
// ProductView.java
import javax.swing.*;
import java.awt.*;
public class ProductView extends JPanel {
private Product product;
public ProductView(Product product) {
super(new GridLayout(2, 1));
this.product = product;
// 创建商品名称标签
JLabel labelName = new JLabel(product.getName());
labelName.setFont(new Font("黑体", Font.BOLD, 16));
add(labelName);
// 创建商品价格标签
JLabel labelPrice = new JLabel("价格:" + product.getPrice());
labelPrice.setFont(new Font("黑体", Font.PLAIN, 14));
add(labelPrice);
}
}
```
```java
// ProductController.java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ProductController {
private ProductList productList;
private JTextField textFieldName;
private JTextField textFieldPrice;
private JPanel panelProductList;
public ProductController(ProductList productList, JTextField textFieldName, JTextField textFieldPrice, JPanel panelProductList) {
this.productList = productList;
this.textFieldName = textFieldName;
this.textFieldPrice = textFieldPrice;
this.panelProductList = panelProductList;
}
public void addButtonClickHandler(JButton buttonAdd) {
buttonAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的商品名称和价格
String name = textFieldName.getText();
double price = Double.parseDouble(textFieldPrice.getText());
// 添加商品到商品列表
productList.add(new Product(name, price));
// 清空用户输入框
textFieldName.setText("");
textFieldPrice.setText("");
// 刷新商品列表
refreshProductList();
}
});
}
public void deleteButtonClickHandler(JButton buttonDelete) {
buttonDelete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的商品名称
String name = textFieldName.getText();
// 删除商品,并返回删除的商品数量
int count = productList.delete(name);
// 显示删除结果
JOptionPane.showMessageDialog(null, "已删除 " + count + " 个商品");
// 刷新商品列表
refreshProductList();
}
});
}
public void queryButtonClickHandler(JButton buttonQuery) {
buttonQuery.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的商品名称
String name = textFieldName.getText();
// 查询商品,并返回查询结果
Product[] products = productList.query(name);
// 显示查询结果
panelProductList.removeAll();
for (Product product : products) {
panelProductList.add(new ProductView(product));
}
panelProductList.revalidate();
panelProductList.repaint();
}
});
}
private void refreshProductList() {
panelProductList.removeAll();
for (Product product : productList.getProducts()) {
panelProductList.add(new ProductView(product));
}
panelProductList.revalidate();
panelProductList.repaint();
}
}
```
在这个实现中,我们使用了Java Swing来实现用户界面。程序的入口文件是`Main.java`,其中包含了主函数和用户界面的实现。`Product.java`是商品类,包含了商品的相关属性和方法。`ProductList.java`是商品列表类,包含了商品的集合以及商品的添加、删除、查询等操作。`ProductView.java`是商品展示类,用于展示商品的信息。`ProductController.java`是商品控制器类,用于控制商品的添加、删除、查询等操作。
这个实现中,我们还使用了MVC(Model-View-Controller)设计模式,将数据、视图和控制器分离开来,使程序更加清晰易懂。
阅读全文