通讯录bean.java

来自「个人开发的数字助理」· Java 代码 · 共 453 行

JAVA
453
字号
package 通讯录;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Hashtable;
import java.util.Vector;

import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import java.awt.GridBagLayout;
import java.awt.FlowLayout;
import javax.swing.border.SoftBevelBorder;

public class 通讯录Bean extends JPanel implements ActionListener {
	JTextArea				jText5;

	JButton					删除日志;

	JButton					保存日志;

	Hashtable				table;								// @jve:decl-index=0:

	JPanel					pSouth			= new JPanel();

	File					file;

	private JPanel			jPanel			= null;

	private JScrollPane		jScrollPane1	= null;

	Hashtable				hashtable		= new Hashtable();	// @jve:decl-index=0:

	private JTextField		jText1			= null;

	DefaultTableModel		dm				= null;

	private JTable			friends;

	private JLabel			jLabel1			= null;

	private JLabel			jLabel2			= null;

	private JTextField		jText2			= null;

	private JLabel			jLabel3			= null;

	private JTextField		jText2_1		= null;

	private JLabel			jLabel4			= null;

	private JTextField		jText3			= null;

	private JLabel			jLabel5			= null;

	private JTextField		jText4			= null;

	private JLabel			jLabel6			= null;

	private JPanel			jPanel1			= null;

	private int				j				= 0;

	private boolean			是否添加行			= true;

	public static Vector	关键字列表			= new Vector();  //  @jve:decl-index=0:

	public static int		keyArrayCurson	= 0;

	// ----------------------------------------------------------------------------------------------------------------------------------------
	public 通讯录Bean()
		{
			initialize();
		}

	/**
	 * This method initializes this
	 */

	private void initialize() {
		// this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		final Object[] columnNames = { "姓名", "Email", "家庭地址",// 列名最好用final修饰
				"电话号码", "备注" };
		Object[][] rowData = {
				{ "冯浩", "fenghao@126.com", "山东青岛", "1378313210",  "学生" },
				{ "冯浩", "fenghao@126.com", "山东青岛", "1378313210",  "学生" },
				{ "冯浩", "fenghao@126.com", "山东青岛", "1378313210",  "学生" },
				{ "冯浩", "fenghao@126.com", "山东青岛", "1378313210",  "学生" },
				{ "冯浩", "fenghao@126.com", "山东青岛", "1378313210",  "学生" },
				 };

		dm = new DefaultTableModel(rowData, columnNames);
		friends = new JTable(dm);
		// friends.setBounds(new Rectangle(54, 345, 375, 80));
		setLayout(null);
		this.setSize(new Dimension(452, 508));
		file = new File("通讯录1.txt");
		if (!file.exists())
			{
				try
					{
						FileOutputStream out = new FileOutputStream(file);
						ObjectOutputStream objectOut = new ObjectOutputStream(
								out);
						objectOut.writeObject(hashtable);
						objectOut.close();
						out.close();
					} catch (IOException e)
					{
					}
			}
		else
//			System.out.print("文件已存在!");
//			for (int cnt = 0; cnt < 关键字列表.size(); cnt++)
//				for(int k=0;k<=5;k++)
//				{
					获取日志内容(关键字列表.get(1).toString(), 0);
//					获取日志内容(关键字列表.get(k).toString() + 2, 1);
//					获取日志内容(关键字列表.get(k).toString() + 3, 2);
//					获取日志内容(关键字列表.get(k).toString() + 4, 3);
//					获取日志内容(关键字列表.get(k).toString() + 5, 4);
//				}
		jText5 = new JTextArea(10, 10);
		jText5.setLineWrap(true);
		保存日志 = new JButton("保存日志");
		保存日志.setBounds(new Rectangle(66, 8, 86, 28));
		删除日志 = new JButton("删除日志");
		删除日志.setBounds(new Rectangle(264, 9, 86, 28));
		保存日志.addActionListener(this);
		删除日志.addActionListener(this);

		pSouth.setLayout(new BoxLayout(pSouth, BoxLayout.X_AXIS));
		pSouth.setName("pSouth");
		pSouth.setBounds(new Rectangle(78, 158, 335, 53));
		pSouth.add(jText5, null);
		pSouth.add(getJScrollPane1(), null);
		this.add(getJPanel(), null);
		JScrollPane pane3 = new JScrollPane(friends);

		pane3.setBounds(new Rectangle(26, 339, 407, 197));
		this.add(pane3, null);
		this.add(getJPanel1(), null);
	}

	// ----------------------------------------------------------------------------------------------------------------------------------------
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == 保存日志)
			{

				保存日志();
				System.out.println(friends.getRowCount());
				j++;
//				if (j == friends.getRowCount()-1)
//					if (是否添加行 == true)
//						{
							dm.addRow(new Object[] { jText1.getText(),
									jText2.getText(), jText3.getText(),
									jText4.getText(), jText5.getText() });
							是否添加行 = false;
//						}

			}
		else if (e.getSource() == 删除日志)
			{
				删除日志(jText1.getText());
			}
	}

	public void 保存日志() {
		保存日志(jText1.getText(), jText1.getText());
		保存日志(jText2.getText() + "@" + jText2_1.getText(), jText1.getText() + 2);
		保存日志(jText3.getText(), jText1.getText() + 3);
		保存日志(jText4.getText(), jText1.getText() + 4);
		保存日志(jText5.getText(), jText1.getText() + 5);
		获取日志内容(jText1.getText(), 0);
		获取日志内容(jText1.getText() + 2, 1);
		获取日志内容(jText1.getText() + 3, 2);
		获取日志内容(jText1.getText() + 4, 3);
		获取日志内容(jText1.getText() + 5, 4);

	}

	// ----------------------------------------------------------------------------------------------------------------------------------------
	public void 设置文本区(String s) {
		jText5.setText(s);
	}

	// ----------------------------------------------------------------------------------------------------------------------------------------
	public void 获取日志内容(String key, int i) {
		try
			{
				FileInputStream inOne = new FileInputStream(file);
				ObjectInputStream inTwo = new ObjectInputStream(inOne);
				table = (Hashtable) inTwo.readObject();
				inOne.close();
				inTwo.close();
			} catch (Exception ee)
			{
			}
		if (table.containsKey(key))
			{
				friends.setValueAt((String) table.get(key), j, i);
			}
		else
			{
				jText5.setText("无记录");
				是否添加行 = false;
			}
	}

	// ----------------------------------------------------------------------------------------------------------------------------------------
	public void 保存日志(String 日志内容, String flag) {
		// String 日志内容 = text.getText();
		// String key = "" + year + "" + month + "" + day;
		String key = flag;
		关键字列表.add(flag);
		try
			{
				FileInputStream inOne = new FileInputStream(file);
				ObjectInputStream inTwo = new ObjectInputStream(inOne);
				table = (Hashtable) inTwo.readObject();
				inOne.close();
				inTwo.close();
				table.put(key, 日志内容);
				FileOutputStream out = new FileOutputStream(file);
				ObjectOutputStream objectOut = new ObjectOutputStream(out);
				objectOut.writeObject(table);
				objectOut.close();
				out.close();
			} catch (Exception ee)
			{
			}
	}

	// ----------------------------------------------------------------------------------------------------------------------------------------
	public void 删除日志(String flag) {
		String key = flag;
		if (table.containsKey(key))
			{
				String m = "删除" + flag + "吗?";
				int ok = JOptionPane
						.showConfirmDialog(this, m, "询问",
								JOptionPane.YES_NO_OPTION,
								JOptionPane.QUESTION_MESSAGE);
				if (ok == JOptionPane.YES_OPTION)
					{
						try
							{
								FileInputStream inOne = new FileInputStream(
										file);
								ObjectInputStream inTwo = new ObjectInputStream(
										inOne);
								table = (Hashtable) inTwo.readObject();
								inOne.close();
								inTwo.close();
								table.remove(key);
								FileOutputStream out = new FileOutputStream(
										file);
								ObjectOutputStream objectOut = new ObjectOutputStream(
										out);
								objectOut.writeObject(table);
								objectOut.close();
								out.close();
								jText5.setText(null);
							} catch (Exception ee)
							{
							}
					}
			}
		else
			{

				String m = "" + flag + "无日志记录";
				JOptionPane.showMessageDialog(this, m, "提示",
						JOptionPane.WARNING_MESSAGE);
			}
	}

	// ----------------------------------------------------------------------------------------------------------------------------------------

	/**
	 * This method initializes jPanel
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel() {
		if (jPanel == null)
			{
				jLabel6 = new JLabel();
				jLabel6.setBounds(new Rectangle(18, 175, 41, 18));
				jLabel6.setText("备注:");
				jLabel5 = new JLabel();
				jLabel5.setBounds(new Rectangle(22, 128, 32, 23));
				jLabel5.setText("QQ:");
				jLabel4 = new JLabel();
				jLabel4.setBounds(new Rectangle(4, 80, 65, 22));
				jLabel4.setText("家庭住址;");
				jLabel3 = new JLabel();
				jLabel3.setBounds(new Rectangle(253, 36, 13, 22));
				jLabel3.setText("@");
				jLabel2 = new JLabel();
				jLabel2.setBounds(new Rectangle(14, 36, 46, 21));
				jLabel2.setText("Email:");
				jLabel1 = new JLabel();
				jLabel1.setBounds(new Rectangle(16, 5, 43, 24));
				jLabel1.setText("姓名:");
				jPanel = new JPanel();
				jPanel.setLayout(null);
				jPanel.setName("jPanel");
				jPanel.setBounds(new Rectangle(15, 12, 422, 221));
				jPanel.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
				jPanel.add(getJText1(), null);
				jPanel.add(pSouth, null);
				jPanel.add(jLabel1, null);
				jPanel.add(jLabel2, null);
				jPanel.add(getJTex2(), null);
				jPanel.add(jLabel3, null);
				jPanel.add(getJText2_1(), null);
				jPanel.add(jLabel4, null);
				jPanel.add(getJText3(), null);
				jPanel.add(jLabel5, null);
				jPanel.add(getJText4(), null);
				jPanel.add(jLabel6, null);
			}
		return jPanel;
	}

	/**
	 * This method initializes jScrollPane1
	 * 
	 * @return javax.swing.JScrollPane
	 */
	private JScrollPane getJScrollPane1() {
		if (jScrollPane1 == null)
			{
				jScrollPane1 = new JScrollPane(jText5);
				jScrollPane1.setName(null);
			}
		return jScrollPane1;
	}

	/**
	 * This method initializes jText1
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJText1() {
		if (jText1 == null)
			{
				jText1 = new JTextField();
				jText1.setBounds(new Rectangle(81, 6, 164, 22));
			}
		return jText1;
	}

	/**
	 * This method initializes jTex2
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJTex2() {
		if (jText2 == null)
			{
				jText2 = new JTextField();
				jText2.setBounds(new Rectangle(81, 36, 162, 22));
			}
		return jText2;
	}

	/**
	 * This method initializes jText2_1
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJText2_1() {
		if (jText2_1 == null)
			{
				jText2_1 = new JTextField();
				jText2_1.setBounds(new Rectangle(269, 36, 93, 23));
			}
		return jText2_1;
	}

	/**
	 * This method initializes jText3
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJText3() {
		if (jText3 == null)
			{
				jText3 = new JTextField();
				jText3.setBounds(new Rectangle(79, 65, 283, 52));
			}
		return jText3;
	}

	/**
	 * This method initializes jText4
	 * 
	 * @return javax.swing.JTextField
	 */
	private JTextField getJText4() {
		if (jText4 == null)
			{
				jText4 = new JTextField();
				jText4.setBounds(new Rectangle(77, 127, 125, 24));
			}
		return jText4;
	}

	/**
	 * This method initializes jPanel1
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null)
			{
				jPanel1 = new JPanel();
				jPanel1.setLayout(null);
				jPanel1.setBounds(new Rectangle(14, 242, 421, 42));
				jPanel1.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
				jPanel1.add(删除日志, null);
				jPanel1.add(保存日志, null);
			}
		return jPanel1;
	}

	/**
	 * This method initializes jComboBox
	 * 
	 * @return javax.swing.JComboBox
	 */
} // @jve:decl-index=0:visual-constraint="21,6"

⌨️ 快捷键说明

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