package course;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
import javax.swing.UIManager;
/**
* 水费账单信息管理页面
* @author LIANQI
*
*/
public class RecordPanel extends JPanel implements ActionListener {
private JTextField textField;
private JTable table;
private List<Record> courses;
private ButtonGroup buttonGroup;
private JButton updateBtn, addBtn, deleteBtn,searchBtn;
private JFrame jFrame;
/**
* Create the panel.
*/
public RecordPanel(JFrame jFrame) {
this.jFrame = jFrame;
setLayout(new BorderLayout(0, 0));
// 头部搜索栏
{
JPanel headerPanel = new JPanel();
headerPanel.setBorder(new EmptyBorder(10, 10, 0, 0));
add(headerPanel, BorderLayout.NORTH);
headerPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
JLabel lblNewLabel = new JLabel("名称:");
lblNewLabel.setFont(new Font("宋体", Font.BOLD, 16));
headerPanel.add(lblNewLabel);
textField = new JTextField();
textField.setFont(new Font("宋体", Font.PLAIN, 16));
headerPanel.add(textField);
textField.setColumns(15);
// 搜索按钮
searchBtn = new JButton("\u641C\u7D22");
searchBtn.setFont(new Font("宋体", Font.BOLD, 14));
searchBtn.addActionListener(this);
headerPanel.add(searchBtn);
// 新增
addBtn = new JButton("\u65B0\u589E");
addBtn.setFont(new Font("宋体", Font.BOLD, 14));
addBtn.addActionListener(this);
headerPanel.add(addBtn);
// 删除
deleteBtn = new JButton("删除");
deleteBtn.setFont(new Font("宋体", Font.BOLD, 14));
deleteBtn.addActionListener(this);
headerPanel.add(deleteBtn);
// 修改
updateBtn = new JButton("修改");
updateBtn.setFont(new Font("宋体", Font.BOLD, 14));
updateBtn.addActionListener(this);
headerPanel.add(updateBtn);
}
{
// 中间内容panel
JPanel contentPanel = new JPanel();
contentPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(new GridLayout(1, 1, 0, 0));
table = new JTable();
table.setBackground(Color.WHITE);
table.setRowHeight(25);
// 初始值
refreshTable();
// 放入滚动页面
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
contentPanel.add(scrollPane);
}
}
public List<Record> getList() {
try {
return RecordUtil.getList(textField.getText().trim());
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return null;
}
/**
* UserTableModle 自定义
*
* @author LIANQI
*
*/
class TableModle extends AbstractTableModel {
private List<Record> records;
public TableModle(List<Record> records) {// 构造方法,在创建对象时就将数据传入
this.records = records;
}
@Override
public int getColumnCount() {
// TODO 自动生成的方法存根
return 5;
}
@Override
public int getRowCount() {
// TODO 自动生成的方法存根
return this.records==null?0:this.records.size();
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// TODO 自动生成的方法存根
return false;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return rowIndex + 1;
case 1:
return this.records.get(rowIndex).getUserName();
case 2:
return this.records.get(rowIndex).getUserAddress();
case 3:
return this.records.get(rowIndex).getCost();
case 4:
return this.records.get(rowIndex).getMonth();
case 5:
return new SimpleDateFormat("yyyy-MM-dd HH:mm").format(this.records.get(rowIndex).getCreateTime());
default:
return "-";
}
}
// 列名,给定列号,返回列名
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "序号";
case 1:
return "用户名称";
case 2:
return "用户地址";
case 3:
return "费用";
case 4:
return "月份";
case 5:
return "创建时间";
default:
return "-";
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
Component component = (Component) e.getSource();
if (component == addBtn) {
new OperationDialog(jFrame, "添加水费账单", null, this).setVisible(true);
}else if(component == deleteBtn) {
int selectRow =table.getSelectedRow();
if (selectRow<0) {
JOptionPane.showMessageDialog(this, "请选择你要删除的水费账单!");;
}else {
Record course=courses.get(selectRow);
int flag=JOptionPane.showConfirmDialog(this, "是否确认删除["+course.getUserName()+"]水费账单吗?",
"提示!", JOptionPane.YES_NO_CANCEL_OPTION);
if(flag==JOptionPane.YES_OPTION) {
try {
RecordUtil.deleteById(course.getId());
JOptionPane.showMessageDialog(this, "删除成功!");;
} catch (Exception e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
refreshTable();
}
}
}else if(component == updateBtn) {
int selectRow =table.getSelectedRow();
if (selectRow<0) {
JOptionPane.showMessageDialog(this, "请选择你要修改的水费账单!");;
}else {
Record course=courses.get(selectRow);
new OperationDialog(jFrame, "修改水费账单", course, this).setVisible(true);
}
}else if(component==searchBtn) {
refreshTable();
}
}
public void refreshTable() {
courses = getList();
table.setModel(new TableModle(courses));
table.repaint();
}
}