⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 productframe.java

📁 电话号码查询系统 要求有电话录入
💻 JAVA
字号:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
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.table.DefaultTableColumnModel;

public class ProductFrame extends JFrame {

	private JPanel panelTop = null;
	private JLabel labHeader = null;
	private JPanel panelBottom = null;
	private JButton add = null;
	private JButton delete = null;
	private JButton save = null;
	private JButton exit =null;
	private JScrollPane scroll = null;
	private JTable table = null;
	private ProductTableModel model = null;
	private List listProduct = null;
	private JLabel copyright=null;

	public ProductTableModel getModel() {
		if (null == model) {
			model = new ProductTableModel(listProduct);
			// 给model添加一个监听,当修改的时候将触发该事件,代表事件的类是ChangeEvent
			model.addTableModelListener(new ChangeEvent(model));
			return model;
		}
		return model;
	}

	public JLabel getLabHeader() {
		if (null == labHeader) {
			labHeader = new JLabel("电话簿管理系统");
			return labHeader;
		}
		return labHeader;

	}
	
	public JLabel getCopyright(){
		if(null==copyright){
			copyright=new JLabel("【copyright@龚麒】");
			return copyright;
		}
		return copyright;
	}

	public JTable getTable() {
		if (null == table) {
			table = new JTable(getModel());
			table.setEnabled(true);
			table.setRowSelectionAllowed(true);
			table.setBackground(Color.YELLOW);
			/**
			 * 隐藏第一列ID,不显示出来
			 */
	/*		DefaultTableColumnModel dcm = (DefaultTableColumnModel) table
					.getColumnModel();
			dcm.getColumn(0).setMinWidth(0);
			dcm.getColumn(0).setMaxWidth(0);*/
			return table;
		}
		return table;
	}

	public JScrollPane getPanTable() {
		if (null == scroll) {
			scroll = new JScrollPane();
			scroll.setViewportView(getTable());
			return scroll;
		}
		return scroll;
	}

	public JPanel getPanelTop() {
		if (null == panelTop) {
			panelTop = new JPanel();
			panelTop.setLayout(new FlowLayout(FlowLayout.CENTER));
			panelTop.add(getLabHeader());
			return panelTop;
		}
		return panelTop;
	}

	public JPanel getPanelBottom() {
		if (null == panelBottom) {
			panelBottom = new JPanel();
			panelBottom.setLayout(new FlowLayout(FlowLayout.CENTER));
			panelBottom.add(getAdd());
			panelBottom.add(getDelete());
			panelBottom.add(getSave());
			panelBottom.add(getExit());
			panelBottom.add(getCopyright());
			return panelBottom;
		}
		return panelBottom;
	}

	public JButton getAdd() {
		/**
		 * 点该按钮的时候调用addProduct()方法,在数据源(listProduct)将 增加一个元素,没设值前都是null.
		 */
		if (null == add) {
			add = new JButton("Add");
			add.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					addProduct();
				}

			});
			return add;
		}
		return add;
	}

	public JButton getDelete() {
		if (null == delete) {
			delete = new JButton("Delete");
			delete.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					/**
					 * 支持一次选中多行后删除
					 */
					int[] rows = getTable().getSelectedRows();
					if (rows.length > 0) {
						int flag = JOptionPane.showConfirmDialog(null, "确定删除?");
						if (flag == JOptionPane.YES_OPTION)
							deleteProduct();
					} else
						JOptionPane.showMessageDialog(null, "请选择要删除的行!");
				}

			});
			return delete;
		}
		return delete;
	}

	public JButton getSave() {
		if (null == save) {
			save = new JButton("Save");
			save.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					saveProduct();
					JOptionPane.showMessageDialog(null, "更新成功!");
				}

			});
			return save;
		}
		return save;
	}
	
	public JButton getExit(){
		if(null==exit){
			exit=new JButton("Exit");
			exit.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					int flag = JOptionPane.showConfirmDialog(null, "确认数据已保存并退出?");
					if (flag == JOptionPane.YES_OPTION){
						System.exit(0);
					}
				}
			});
			return exit;
		}
		return exit;
	}

	public void addProduct() {
		ProductBean p = new ProductBean();
		getModel().addRow(getTable().getSelectedRow(), p);
	}

	public void saveProduct() {
		DaoInterface dao = DaoFactory.getDao();
		List changeList = getModel().getChangeList();
		// 如果有修改过就调用update方法
		if (changeList.size() > 0) {
			dao.update(changeList);
			changeList.clear();
		}
		List newRow = getModel().getNewRow();
		// 如果是新增就调用saveList,支持一次增加多行
		if (newRow.size() > 0) {
			dao.saveList(newRow);
			getModel().setList(dao.getList());
			getTable().updateUI();
			newRow.clear();
		}

	}

	public void deleteProduct() {
		/**
		 * 支持一次删除多行,先获得所有选中的行,然后按照行数取得Product实例,
		 * 放进一个list,然后传给操作数据库的deleteList方法.
		 */
		int[] rows = getTable().getSelectedRows();
		ArrayList list = new ArrayList();
		DaoInterface dao = DaoFactory.getDao();
		for (int i = rows.length - 1; i >= 0; i--) {
			list.add(getModel().getRow(rows[i]));
			getModel().deleteRow(rows[i]);
		}
		dao.deleteList(list);
		getTable().updateUI();
		list.clear();
	}

	public void initData() {
		/**
		 * 初始化数据源,从数据库里把数据拿出来,然后它会调用 getValueAt方法来一个单元格一个单元格来设值,让它显示出来.
		 */
		listProduct = new ArrayList();
		DaoInterface dao = DaoFactory.getDao();
		listProduct = dao.getList();
		//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public ProductFrame() {
		initData();
		Container c = this.getContentPane();
		c.setLayout(new BorderLayout());
		c.add(getPanelTop(), BorderLayout.NORTH);
		c.add(getPanelBottom(), BorderLayout.SOUTH);
		c.add(getPanTable(), BorderLayout.CENTER);
		this.setSize(new Dimension(600, 400));
		this.setLocation(300,150);
		this.setVisible(true);
	}

	public static void main(String[] args) {
		ProductFrame frame = new ProductFrame();
	}

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -