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

📄 mainwindow.java

📁 java写的一个通讯录的程序。使用的是AWT组件
💻 JAVA
字号:

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;


public class MainWindow extends JFrame implements ActionListener{
	
	private static final long serialVersionUID = 1L;
	BusinessObject bo; 
	JTextField txtNumber;
	JTextField txtName;
	JTextField txtAge;
	JRadioButton rbtnMale;
	JRadioButton rbtnFemale;
	JTextField txtTel;
	JTextField txtPhotoAddr;
	JButton btnFirst;
	JButton btnPrevious;
	JButton btnNext;
	JButton btnLast;
	JButton btnAdd;
	JButton btnSave;
	JButton btnExit;
	JButton btnAbout;
	JLabel jlbPhoto;
	
	public MainWindow(){
		bo = new BusinessObject();
		Container con = this.getContentPane();
		con.setLayout(null);
		
		JLabel lableNumber = new JLabel("用户编号:");
		lableNumber.setBounds(20, 20, 60, 25);
		con.add(lableNumber);
		txtNumber = new JTextField();
		txtNumber.setBounds(90, 20, 100, 25);
		con.add(txtNumber);
		
		JLabel lableName = new JLabel("姓名:");
		lableName.setBounds(20, 55, 60, 25);
		con.add(lableName);
		txtName = new JTextField();
		txtName.setBounds(90, 55, 100, 25);
		con.add(txtName);
		
		JLabel lableAge = new JLabel("年龄:");
		lableAge.setBounds(20, 90, 60, 25);
		con.add(lableAge);
		txtAge = new JTextField();
		txtAge.setBounds(90, 90, 50, 25);
		con.add(txtAge);
		
		JLabel labelSex = new JLabel("性别:");
		labelSex.setBounds(20, 125, 60, 25);
		con.add(labelSex);
		rbtnMale = new JRadioButton("男");
		rbtnMale.setBounds(90, 125, 50, 25);
		rbtnMale.setSelected(true);
		con.add(rbtnMale);
		rbtnFemale = new JRadioButton("女");
		rbtnFemale.setBounds(150, 125, 50, 25);
		con.add(rbtnFemale);
		ButtonGroup btnGroup = new ButtonGroup();
		btnGroup.add(rbtnMale);
		btnGroup.add(rbtnFemale);
		
		JLabel lableTel = new JLabel("联系方式:");
		lableTel.setBounds(20, 160, 60, 25);
		con.add(lableTel);
		txtTel = new JTextField();
		txtTel.setBounds(90, 160, 150, 25);
		con.add(txtTel);
		
		JLabel lablePhotoAddr = new JLabel("照片路径:");
		lablePhotoAddr.setBounds(20, 195, 60, 25);
		con.add(lablePhotoAddr);
		txtPhotoAddr = new JTextField();
		txtPhotoAddr.setBounds(90, 195, 150, 25);
		con.add(txtPhotoAddr);
		
		jlbPhoto = new JLabel();
		jlbPhoto.setBounds(220, 20, 100, 120);
		jlbPhoto.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		con.add(jlbPhoto);
		
		JPanel jpanelScan = new JPanel();
		jpanelScan.setBounds(5, 225, 340, 60);
		jpanelScan.setBorder(BorderFactory.createTitledBorder("浏览记录"));
		con.add(jpanelScan);
		
		JPanel jpanelOperation = new JPanel();
		jpanelOperation.setBounds(5, 285, 340, 60);
		jpanelOperation.setBorder(BorderFactory.createTitledBorder("操作"));
		con.add(jpanelOperation);
		
		btnFirst = new JButton("第一条");
		btnPrevious = new JButton("上一条");
		btnNext = new JButton("下一条");
		btnLast = new JButton("后一条");
		jpanelScan.setLayout(new FlowLayout());
		jpanelScan.add(btnFirst);
		jpanelScan.add(btnPrevious);
		jpanelScan.add(btnNext);
		jpanelScan.add(btnLast);
		
		btnAdd = new JButton("新增(A)");
		btnSave = new JButton("保存(S)");
		btnExit = new JButton("退出(E)");
		btnAbout = new JButton("关于(A)");
		jpanelOperation.setLayout(new FlowLayout());
		jpanelOperation.add(btnAdd);
		jpanelOperation.add(btnSave);
		jpanelOperation.add(btnExit);
		jpanelOperation.add(btnAbout);
		
		this.setSize(349, 380);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		btnFirst.addActionListener(this);
		btnPrevious.addActionListener(this);
		btnNext.addActionListener(this);
		btnLast.addActionListener(this);
		btnAdd.addActionListener(this);
		btnSave.addActionListener(this);
		btnAbout.addActionListener(this);
		btnExit.addMouseListener(new MouseAdapter(){   
			public void mouseClicked(MouseEvent e){   
		         System.exit(0);
			}   
		});
		PropertiesUtil pro = new PropertiesUtil("telephone.properties");
		String[] key = pro.getAllKeys();
		if(key.length==0){
			btnFirst.setEnabled(false);
			btnPrevious.setEnabled(false);
			btnNext.setEnabled(false);
			btnLast.setEnabled(false);
		}else{
			displayUserInfo(bo.first());
		}
		txtNumber.setEditable(false);
		
	}
	
	public void actionPerformed(ActionEvent e) {
		Object button = e.getSource();
		if(button == btnFirst){
			User user = bo.first();
			displayUserInfo(user);
		}else if(button == btnPrevious){
			User user = bo.previous();
			displayUserInfo(user);
		}else if(button == btnNext){
			User user = bo.next();
			displayUserInfo(user);
		}else if(button == btnLast){
			User user = bo.last();
			displayUserInfo(user);
		}else if(button == btnAdd){
				txtName.setEditable(true);
				PropertiesUtil pro = new PropertiesUtil("telephone.properties");
				String[] key = pro.getAllKeys();
				if(key.length<10){
					txtNumber.setText("0"+"0"+(key.length+1));
				}else if(key.length>=10&&key.length<100){
					txtNumber.setText("0"+(key.length+1));
				}else if(key.length>=100){
					txtNumber.setText(""+key.length+1);
				}
				txtNumber.setEditable(false);
				txtName.setText("");
				txtAge.setText("");
				txtTel.setText("");
				txtPhotoAddr.setText("");
				rbtnMale.setSelected(true);
				jlbPhoto.setIcon(null);
				txtName.setEditable(true);
				txtAge.setEditable(true);
				txtTel.setEditable(true);
				txtPhotoAddr.setEditable(true);
				btnSave.setEnabled(true);
				
		}else if(button == btnSave){
			if (validateInfo()){
				User user = new User();
				user.setNo(txtNumber.getText());
				user.setAge(new Integer(txtAge.getText()));
				user.setPhone(txtTel.getText());
				user.setName(txtName.getText());
				user.setImagePath(txtPhotoAddr.getText());
				user.setSex("M");
				if (rbtnFemale.isSelected()) {
					user.setSex("F");
				}
			
				bo.saveUser(user);
				
				this.dispose();
				new MainWindow();
			}
			
		}else if(button == btnAbout){
			System.out.println("关于");
		}
		
	}
	
	public boolean validateInfo(){
		if ("".equals(txtNumber.getText().trim())) {
    		JOptionPane.showMessageDialog(this, "请新增一个联系人!");
    		return false;
    	}
		if ("".equals(txtName.getText().trim())) {
    		JOptionPane.showMessageDialog(this, "用户姓名不能为空!");
    		return false;
    	}
    	if ("".equals(txtAge.getText().trim())) {
    		JOptionPane.showMessageDialog(this, "用户年龄不能为空!");
    		return false;
    	}
    	String strAge = txtAge.getText().trim();
    	if ( ! strAge.matches("[0-9]{1,3}")){
    		JOptionPane.showMessageDialog(this, "用户年龄不符合规则!");
    		return false;
    	}
		return true;
	}
	
	public void displayUserInfo(User user){
		txtNumber.setText(user.getNo());
		txtName.setText(user.getName());
		txtAge.setText(user.getAge().toString());
    	txtTel.setText(user.getPhone());
    	txtPhotoAddr.setText(user.getImagePath());
    	jlbPhoto.setIcon(new ImageIcon(user.getImagePath()));
    	String sex = user.getSex();
    	if ("M".equals(sex)) {
    		rbtnMale.setSelected(true);
    	} else {
    		rbtnFemale.setSelected(true);
    	}
	}
		
	public static void main(String[] args){
		new MainWindow();
	}
	
}

⌨️ 快捷键说明

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