import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
public class SportAdd extends JFrame implements ActionListener {
JTextField text_productName;
JTextField text_category;
JTextField text_price;
JTextField text_stock;
JTextField text_brand;
JTextArea text_description;
JButton btnConfirm;
JButton btnCancel;
SportManneger parentFrame;
SportAdd(SportManneger parent) {
super("添加体育商品");
this.parentFrame = parent;
initUI();
}
SportAdd() {
super("添加体育商品");
initUI();
}
private void initUI() {
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
Container c = getContentPane();
// 背景面板
JPanel backgroundPanel = new JPanel(new BorderLayout()) {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
java.awt.GradientPaint gradient = new java.awt.GradientPaint(
0, 0, new Color(240, 248, 255),
0, getHeight(), new Color(230, 240, 250)
);
g2d.setPaint(gradient);
g2d.fillRect(0, 0, getWidth(), getHeight());
}
};
backgroundPanel.setOpaque(true);
JPanel mainPanel = new JPanel(new GridLayout(7, 2, 15, 15));
mainPanel.setOpaque(false);
mainPanel.setBorder(BorderFactory.createCompoundBorder(
new TitledBorder("商品信息"),
new EmptyBorder(25, 25, 25, 25)));
Font labelFont = new Font("微软雅黑", Font.BOLD, 14);
Font textFont = new Font("微软雅黑", Font.PLAIN, 13);
JLabel label_productName = new JLabel("商品名称:");
label_productName.setFont(labelFont);
text_productName = new JTextField();
text_productName.setFont(textFont);
text_productName.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(200, 200, 200), 1, true),
new EmptyBorder(8, 12, 8, 12)));
JLabel label_category = new JLabel("类别:");
label_category.setFont(labelFont);
text_category = new JTextField();
text_category.setFont(textFont);
text_category.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(200, 200, 200), 1, true),
new EmptyBorder(8, 12, 8, 12)));
JLabel label_price = new JLabel("价格:");
label_price.setFont(labelFont);
text_price = new JTextField();
text_price.setFont(textFont);
text_price.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(200, 200, 200), 1, true),
new EmptyBorder(8, 12, 8, 12)));
JLabel label_stock = new JLabel("库存:");
label_stock.setFont(labelFont);
text_stock = new JTextField();
text_stock.setFont(textFont);
text_stock.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(200, 200, 200), 1, true),
new EmptyBorder(8, 12, 8, 12)));
JLabel label_brand = new JLabel("品牌:");
label_brand.setFont(labelFont);
text_brand = new JTextField();
text_brand.setFont(textFont);
text_brand.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(200, 200, 200), 1, true),
new EmptyBorder(8, 12, 8, 12)));
JLabel label_description = new JLabel("描述:");
label_description.setFont(labelFont);
text_description = new JTextArea(3, 20);
text_description.setFont(textFont);
text_description.setLineWrap(true);
text_description.setWrapStyleWord(true);
text_description.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(200, 200, 200), 1, true),
new EmptyBorder(8, 12, 8, 12)));
btnConfirm = createStyledButton("确定", new Color(34, 139, 34), new Color(50, 205, 50));
btnCancel = createStyledButton("取消", new Color(128, 128, 128), new Color(169, 169, 169));
mainPanel.add(label_productName);
mainPanel.add(text_productName);
mainPanel.add(label_category);
mainPanel.add(text_category);
mainPanel.add(label_price);
mainPanel.add(text_price);
mainPanel.add(label_stock);
mainPanel.add(text_stock);
mainPanel.add(label_brand);
mainPanel.add(text_brand);
mainPanel.add(label_description);
mainPanel.add(text_description);
JPanel buttonPanel = new JPanel();
buttonPanel.setOpaque(false);
buttonPanel.setBorder(new EmptyBorder(15, 0, 15, 0));
buttonPanel.add(btnConfirm);
buttonPanel.add(new JLabel(" "));
buttonPanel.add(btnCancel);
backgroundPanel.add(mainPanel, BorderLayout.CENTER);
backgroundPanel.add(buttonPanel, BorderLayout.SOUTH);
c.add(backgroundPanel);
setSize(500, 500);
setVisible(true);
}
// 创建美化按钮
private JButton createStyledButton(String text, Color bgColor, Color hoverColor) {
JButton btn = new JButton(text) {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (getModel().isPressed()) {
g2d.setColor(bgColor.darker());
} else if (getModel().isRollover()) {
g2d.setColor(hoverColor);
} else {
g2d.setColor(bgColor);
}
g2d.fillRoundRect(0, 0, getWidth(), getHeight(), 8, 8);
g2d.dispose();
super.paintComponent(g);
}
};
btn.setFont(new Font("微软雅黑", Font.BOLD, 14));
btn.setForeground(Color.WHITE);
btn.setPreferredSize(new Dimension(100, 40));
btn.setFocusPainted(false);
btn.setBorderPainted(false);
btn.setContentAreaFilled(false);
btn.setOpaque(false);
btn.addActionListener(this);
return btn;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnConfirm) {
// 验证输入
if(text_productName.getText().trim().isEmpty()) {
JOptionPane.showMessageDialog(null, "请输入商品名称!", "提示", JOptionPane.WARNING_MESSAGE);
return;
}
if(text_category.getText().trim().isEmpty()) {
JOptionPane.showMessageDialog(null, "请输入类别!", "提示", JOptionPane.WARNING_MESSAGE);
return;
}
if(text_price.getText().trim().isEmpty()) {
JOptionPane.showMessageDialog(null, "请输入价格!", "提示", JOptionPane.WARNING_MESSAGE);
return;
}
if(text_stock.getText().trim().isEmpty()) {
JOptionPane.showMessageDialog(null, "请输入库存!", "提示", JOptionPane.WARNING_MESSAGE);
return;
}
try {
double price = Double.parseDouble(text_price.getText());
int stock = Integer.parseInt(text_stock.getText());
// 插入数据库
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/sport_sql","root","1234");
String sql = "insert into products (商品名称, 类别, 价格, 库存, 品牌, 描述) values (?, ?, ?, ?, ?, ?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, text_productName.getText().trim());
ps.setString(2, text_category.getText().trim());
ps.setDouble(3, price);
ps.setInt(4, stock);
ps.setString(5, text_brand.getText().trim());
ps.setString(6, text_description.getText().trim());
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "商品添加成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
con.close();
// 如果父窗口存在,刷新表格
if(parentFrame != null) {
parentFrame.refreshTable();
}
dispose();
} catch(NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "价格和库存必须是数字!", "错误", JOptionPane.ERROR_MESSAGE);
} catch(SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "添加失败: " + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
} else if(e.getSource() == btnCancel) {
dispose();
}
}
public static void main(String[] args) {
new SportAdd();
}
}
美化这个界面 只是对页面美化 不要修改其他代码
最新发布