《java-----我的第一款像样的小软件》---运用了jsoup,jmail,多线程,文件的io操作等等

运用了jsoup,jmail,多线程,文件的io操作等等多项技术,经历了12*5多个小时终于完成了。

部分代码:

package com.ytu.view;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;

import com.ytu.po.UpdateResultType;
import com.ytu.util.CheckUpdate;
import com.ytu.util.CheckUseCount;
import com.ytu.util.ClipBoardUtil;
import com.ytu.util.GetUserInfo;
import com.ytu.util.PropertiesManger;
import com.ytu.util.ViewUthil;

public class QueryView extends JFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 778406062913410695L;
	// 配置信息
	final Properties basePro = PropertiesManger.getBaseProperties();
	// 加载皮肤配置文件
	Properties skinPro = PropertiesManger.getSkinProperties();

	private JLabel close_JLabel = null;
	private JLabel minimize_JLabel = null;
	private JLabel skin_JLabel = null;
	private JLabel menu_JLabel = null;
	
	private JLabel feng_JLabel = null;
	private JLabel title_JLabel = null;
	
	private JTextField username_JTextField = null;
	private JLabel query_Btn_JLabel = null;
	
	private JLabel copy_JLabel = null;
	private JLabel download_JLabel = null;
	private JLabel contactMe_JLabel = null;
	
	private JTextArea result_JTextArea = null;
	
	private JPanel north_JPanel = null;
	private JPanel center_JPanel = null;
	private JPanel south_JPanel = null;
	
	private JPanel result_JPanel = null;
	private JScrollPane result_JScrollPane = null;
	private JPanel bottom_JPanel = null;
	
	// 加载北部布局相关资源
	Icon close_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/btn_close_normal.png"));
	Icon close_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/btn_close_down.png"));
	Icon close_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/btn_close_highlight.png"));
	Icon minimize_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/minimize.png"));
	Icon minimize_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/minimize_press.png"));
	Icon minimize_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/minimize_hover.png"));
	Icon skin_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/btn_Skin_normal.png"));
	Icon skin_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/btn_Skin_down.png"));
	Icon skin_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/btn_Skin_highlight.png"));
	Icon menu_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/Menu_Normal.png"));
	Icon menu_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/Menu_Pushed.png"));
	Icon menu_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/Menu_Mouseover.png"));

	Icon feng_ImageIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/feng.png"));
	
	Icon query_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/button-normal.png"));
	Icon query_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/button-click.png"));
	Icon query_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/button-hold.png"));
	// 底部资源
	Icon copy_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/copy_normal.png"));
	Icon copy_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/copy_edit_down.png"));
	Icon copy_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/copy_edit_over.png"));
	Icon download_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/download_normal.png"));
	Icon download_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/download_down.png"));
	Icon download_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/download_mouseover.png"));
	Icon contactMe_ImageIcon_normal = new ImageIcon(getClass().getResource("/com/ytu/resource/contactMe_normal.png"));
//	Icon contactMe_ImageIcon_down = new ImageIcon(getClass().getResource("/com/ytu/resource/contactMe_down.png"));
	Icon contactMe_ImageIcon_highlight = new ImageIcon(getClass().getResource("/com/ytu/resource/contactMe_hover.png"));

	// 加载显示信息窗口相关资源
	Icon background_message = new ImageIcon(getClass().getResource(skinPro.getProperty("background_message_image_url")));
	Icon smile_naughtyIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/smile_naughty.gif"));
	Icon smile_cryIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/smile_cry.gif"));
	Icon smile_teethIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/smile_teeth.gif"));
	Icon smile_thinkingIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/smile_thinking.gif"));
	Icon smile_worriedIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/smile_worried.gif"));
	Icon smile_foolIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/smile_fool.gif"));
	
	Icon daxiaoIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/daxiao.png"));
	Icon blueMobileIcon = new ImageIcon(getClass().getResource("/com/ytu/resource/faces/blue_mobile.png"));
	Icon[] faceIcons = {
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/se_1.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/se_2.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/se_3.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/se_4.png"))};
	Icon[] progressIcons = {
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_1.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_2.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_3.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_4.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_5.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_6.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_7.png")),
			new ImageIcon(getClass().getResource("/com/ytu/resource/faces/progress_8.png"))};
	private MessageView messageView = null;
	// 设置背景图
	ImageIcon  background = new ImageIcon(getClass().getResource(skinPro.getProperty("background_image_url")));
	JLabel backImage;
	JPanel backPanel;
	
	// 初始化界面范围
	public final int JFRAME_WIDTH = background.getIconWidth();
	public final int JFRAME_HEIGHT =  background.getIconHeight();
	// 鼠标的在空件上的位置
	public static int M_X;
	public static int M_Y;
	
	public QueryView(){
		init();
		
		handle(this);
	}
	
	// 初始化
	private void init(){
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
//			e.printStackTrace();
		}
//		try {
//           UIManager.setLookAndFeel("ch.randelshofer.quaqua.QuaquaLookAndFeel");
//       } catch (Exception e) {
//       }
		
		// 设置整体的背景图
		backImage = new JLabel(background);
		backImage.setBounds(0, 0, this.JFRAME_WIDTH,this.JFRAME_HEIGHT);
		backPanel = (JPanel) this.getContentPane();
		backPanel.setOpaque(false);
		this.getLayeredPane().setLayout(null);
		this.getLayeredPane().add(backImage, new Integer(Integer.MIN_VALUE));
		backPanel.setLayout(new BorderLayout());
		
		// 北部布局
		north_JPanel = new JPanel();
		north_JPanel.setLayout(null);
		north_JPanel.setOpaque(false);
		north_JPanel.setPreferredSize(new Dimension(this.JFRAME_WIDTH, (close_ImageIcon_normal.getIconHeight())+15));
//		north_JPanel.setBackground(Color.RED);
		
		feng_JLabel = getJLabelByIcon(null, feng_ImageIcon);
		feng_JLabel.setLocation(3, 2);
		title_JLabel = new JLabel();
		title_JLabel.setSize(110, close_ImageIcon_normal.getIconHeight()+10);
		title_JLabel.setLocation(feng_ImageIcon.getIconWidth()+5, -2);
		title_JLabel.setText("计费查询 V 10.0");
		title_JLabel.setFont(new Font("宋体",0,11));
		
		close_JLabel = getJLabelByIcon(null, close_ImageIcon_normal);
		close_JLabel.setLocation(this.JFRAME_WIDTH-close_ImageIcon_normal.getIconWidth(), 0);
		
		minimize_JLabel = getJLabelByIcon(null, minimize_ImageIcon_normal);
		minimize_JLabel.setLocation(this.JFRAME_WIDTH-close_ImageIcon_normal.getIconWidth()-minimize_ImageIcon_normal.getIconWidth()+1, 0);
		
		skin_JLabel = getJLabelByIcon(null, skin_ImageIcon_normal);
		skin_JLabel.setLocation((int) minimize_JLabel.getLocation().getX()-skin_ImageIcon_normal.getIconWidth(), 0);
		
		menu_JLabel = getJLabelByIcon(null, menu_ImageIcon_normal);
		menu_JLabel.setLocation((int) skin_JLabel.getLocation().getX()-menu_ImageIcon_normal.getIconWidth(), 0);
		
		// 添加标签
		north_JPanel.add(feng_JLabel);
		north_JPanel.add(title_JLabel);
		north_JPanel.add(close_JLabel);
		north_JPanel.add(minimize_JLabel);
		north_JPanel.add(skin_JLabel);
		north_JPanel.add(menu_JLabel);
		
		// 中间布局
		center_JPanel = new JPanel(null);
		center_JPanel.setOpaque(false);
//		center_JPanel.setBackground(Color.RED);
		
		username_JTextField = new JTextField();
		username_JTextField.setOpaque(false);
		username_JTextField.setSize(150, 25);
		username_JTextField.setLocation(15, 0);
		query_Btn_JLabel = getJLabelByIcon("查询", query_ImageIcon_normal);
		query_Btn_JLabel.setLocation(JFRAME_WIDTH-query_ImageIcon_normal.getIconWidth()-15, 2);
		
		center_JPanel.add(username_JTextField);
		center_JPanel.add(query_Btn_JLabel);
		
		
		// 南部布局
		south_JPanel = new JPanel(null);
		south_JPanel.setPreferredSize(new Dimension(JFRAME_WIDTH, 330));
		south_JPanel.setOpaque(false);
		
		result_JTextArea = new JTextArea();
//		result_JTextArea.setText("xxxxx");
		result_JTextArea.setEditable(false);
		result_JTextArea.setOpaque(false);
		result_JTextArea.setLineWrap(true);			// 自动换行
//		result_JTextArea.setWrapStyleWord(true);	// 单词适应
		
		result_JScrollPane = new JScrollPane(result_JTextArea);
		result_JScrollPane.setSize(JFRAME_WIDTH-20,305);
		// 将JScrollPane背景设为透明
		result_JScrollPane.setOpaque(false);
		result_JScrollPane.getViewport().setOpaque(false);
		result_JScrollPane.setBorder(null);
		
		// 查询结果面板
		result_JPanel = new JPanel(null);
		result_JPanel.setSize(JFRAME_WIDTH-20, 305);
		result_JPanel.setOpaque(false);
		result_JPanel.setLocation(10, 0);
		result_JPanel.setBorder(BorderFactory.createEtchedBorder());
		
		// 底部面板
		bottom_JPanel = new JPanel(null);
		bottom_JPanel.setSize(JFRAME_WIDTH, 25);
		bottom_JPanel.setLocation(0, 305);
		bottom_JPanel.setOpaque(false);
		
		copy_JLabel = getJLabelByIcon(null, copy_ImageIcon_normal);
		copy_JLabel.setLocation(JFRAME_WIDTH-30, 5);
		
		download_JLabel = getJLabelByIcon(null, download_ImageIcon_normal);
		download_JLabel.setLocation(JFRAME_WIDTH-60, 3);
		
		contactMe_JLabel = getJLabelByIcon(null, contactMe_ImageIcon_normal);
		contactMe_JLabel.setLocation(JFRAME_WIDTH-95, 5);
		
		bottom_JPanel.add(copy_JLabel);
		bottom_JPanel.add(download_JLabel);
		bottom_JPanel.add(contactMe_JLabel);
		
		// 添加控件到南部面板
		result_JPanel.add(result_JScrollPane);
		south_JPanel.add(result_JPanel);
		south_JPanel.add(bottom_JPanel);
		
		// 添加面板到窗体
		this.add(north_JPanel, "North");
		this.add(center_JPanel, "Center");
		this.add(south_JPanel, "South");
		// 去掉窗体的样式
		this.setAlwaysOnTop(true);		// 设置总在前
		this.setUndecorated(true);
		this.setIconImage(new ImageIcon(getClass().getResource("/com/ytu/resource/ytdx_ico.jpg")).getImage());
//		this.getRootPane().setWindowDecorationStyle(JRootPane.QUESTION_DIALOG);
		
//		this.setExtendedState(this.ICONIFIED); //最小化 
//		this.setExtendedState(JFrame.MAXIMIZED_BOTH); //最大化 
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(ViewUthil.getPositionX(this.JFRAME_WIDTH), ViewUthil.getPositionY(this.JFRAME_HEIGHT), this.JFRAME_WIDTH, this.JFRAME_HEIGHT);
		this.setVisible(true);
	}
	
	private void handle(final QueryView jFrame){
		
		final TipWindow bubble = new TipWindow(null, 0, 0, "", null);
		final TipWindow bubble2 = new TipWindow(null, 0, 0, "", null);
		// 关闭按钮相关事件
		close_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				try {
					for (int i = 0; i < jFrame.JFRAME_WIDTH; i+=10){
						Thread.sleep(6);
						jFrame.setSize(jFrame.JFRAME_WIDTH, jFrame.JFRAME_WIDTH-i);
					}
				} catch (Exception e1) {
//					e1.printStackTrace();
					System.exit(0);
				}
				
				System.exit(0);
			}
			@Override
			public void mousePressed(MouseEvent e) {
				bubble.closeTip();
				
				close_JLabel.setIcon(close_ImageIcon_down);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
				
				close_JLabel.setIcon(close_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20, "关闭", null);
				bubble.setVisible(true);
				
				close_JLabel.setIcon(close_ImageIcon_highlight);
			}
		});

		// 最小化按钮相关事件
		minimize_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				
				try {
					double wh_ratio = (double)jFrame.JFRAME_WIDTH/jFrame.JFRAME_HEIGHT;
					
					for (int i = 0; i < jFrame.JFRAME_HEIGHT; i+=10){
						Thread.sleep(6);
						jFrame.setSize((int)((jFrame.JFRAME_HEIGHT-i)*wh_ratio), jFrame.JFRAME_HEIGHT-i);
					}
				} catch (Exception e1) {
//					e1.printStackTrace();
					jFrame.setSize(jFrame.JFRAME_WIDTH, jFrame.JFRAME_HEIGHT);
					jFrame.setExtendedState(JFrame.ICONIFIED);
				}
				
				jFrame.setSize(jFrame.JFRAME_WIDTH, jFrame.JFRAME_HEIGHT);
				jFrame.setExtendedState(JFrame.ICONIFIED);
			}
			@Override
			public void mousePressed(MouseEvent e) {
				bubble.closeTipRapid();
				
				minimize_JLabel.setIcon(minimize_ImageIcon_down);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
				
				minimize_JLabel.setIcon(minimize_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20, "最小化", null);
				bubble.setVisible(true);
				
				minimize_JLabel.setIcon(minimize_ImageIcon_highlight);
			}
		});
		
		// 皮肤按钮相关事件
		skin_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				Properties basePro = PropertiesManger.getBaseProperties();
				// 获取当前皮肤名字
				String old_skin_name = skinPro.getProperty("skin_name");
				String count = PropertiesManger.getSkinProperties().getProperty("query_count");
				
				InputStream in = null;
				
				int i = 1;
				while (true){
					String skinName = basePro.getProperty("skin_name_"+i++);
					if (skinName != null){
						if (skinName.equals(old_skin_name)){		// 将获取的名字与现状的名字相比
							skinName = basePro.getProperty("skin_name_"+i);
							if (skinName == null){					// 若找到看下一个是否为空
								// 若下一个为空,获取第一个
								skinName = basePro.getProperty("skin_name_1");
							}
							in = PropertiesManger.class.getClassLoader()
									.getResourceAsStream("com/ytu/config/skin_"+skinName+".properties");
							break;
						}
					}else{
						break;
					}
				}
				
				// 将修改后的信息保存到配置文件中
				try {
					String filePath_str = basePro.getProperty("config_file_path");
					String fileName_str = basePro.getProperty("config_file_name");
					FileOutputStream out = new FileOutputStream(filePath_str+File.separator+fileName_str);
					
					byte[] buff = new byte[1024];
					int len = -1;
					
					while((len=in.read(buff)) != -1){
						out.write(buff, 0, len);
						out.flush();
					}
					
					in.close();
					out.close();
					
					Properties newSkinPro = PropertiesManger.getSkinProperties();
					newSkinPro.setProperty("query_count", count);
					FileOutputStream out2 = new FileOutputStream(filePath_str+File.separator+fileName_str);
					newSkinPro.store(out2, null);
					
					out2.close();
				} catch (IOException e1) {
//					e1.printStackTrace();
				}
				// 显示更改后的皮肤
				skinPro = PropertiesManger.getSkinProperties();
				
				ImageIcon  new_background = new ImageIcon(getClass()
						.getResource(skinPro.getProperty("background_image_url")));
				backImage.setIcon(new_background);
				
				skin_JLabel.setIcon(skin_ImageIcon_highlight);
				
				// 重新加载需要更新皮肤的图片
				new Thread(){
					public void run() {
						jFrame.background_message = new ImageIcon(getClass().getResource(skinPro.getProperty("background_message_image_url")));;
					}
				}.start();
			}
			@Override
			public void mousePressed(MouseEvent e) {
				bubble.closeTipRapid();
				
				skin_JLabel.setIcon(skin_ImageIcon_down);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
				
				skin_JLabel.setIcon(skin_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20, "更换皮肤", null);
				bubble.setVisible(true);
				
				skin_JLabel.setIcon(skin_ImageIcon_highlight);
			}
		});
		
		// 更新按钮相关事件
		menu_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				menu_JLabel.setIcon(menu_ImageIcon_highlight);
				
				final Point p = jFrame.getLocation();
				messageView = new MessageView(background_message,smile_worriedIcon,progressIcons,"检测更新中...", null, jFrame);
				
				new Thread(){
					public void run() {
						// 检测更新
						UpdateResultType updateResultType = CheckUpdate.isLatest(basePro.getProperty("curren_version"));
						
						// 分析查询结果
						if (updateResultType == UpdateResultType.IS_LATEST){
							messageView.closeViewRapid();
							
							messageView = new MessageView(background_message,smile_teethIcon,null,"亲,你的是最新版本哦...", 180, jFrame);
							// 关闭提示信息
							new Thread(){
								public void run() {
									try {
										Thread.sleep(2000);
									} catch (InterruptedException e) {
//										e.printStackTrace();
										messageView.closeView();
									}
									messageView.closeView();
								}
							}.start();
							messageView.showMessage(p.x-10, p.y+100);
						}else if (updateResultType == UpdateResultType.NET_ERROR){
							messageView.closeViewRapid();
							
							messageView = new MessageView(background_message,smile_cryIcon,null,"亲,网路出问题了吧...", 180, jFrame);
							// 关闭提示信息
							new Thread(){
								public void run() {
									try {
										Thread.sleep(2000);
									} catch (InterruptedException e) {
//										e.printStackTrace();
										messageView.closeView();
									}
									messageView.closeView();
								}
							}.start();
							messageView.showMessage(p.x-10, p.y+100);
						}else if (updateResultType == UpdateResultType.NOT_LATEST){
							messageView.closeViewRapid();
							
							messageView = new MessageView(background_message,smile_foolIcon,null,"亲,不是最新版本哦...", 180, jFrame);
							// 关闭提示信息
							new Thread(){
								public void run() {
									try {
										Thread.sleep(2000);
									} catch (InterruptedException e) {
//										e.printStackTrace();
										messageView.closeView();
									}
									messageView.closeView();
								}
							}.start();
							messageView.showMessage(p.x-10, p.y+100);
						}else{
							messageView.closeView();
						}
					
				}}.start();
				
				messageView.showMessage(p.x-10, p.y+100);
				messageView = null;
			}
			@Override
			public void mousePressed(MouseEvent e) {
				bubble.closeTipRapid();
				bubble2.closeTipRapid();
				
				menu_JLabel.setIcon(menu_ImageIcon_down);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
				bubble2.closeTip();
				
				menu_JLabel.setIcon(menu_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				String version = basePro.getProperty("curren_version_describe");
				String versionLen = basePro.getProperty("curren_version_str_len");
				
				bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20,"检测更新(需联网)", null);
				bubble2.setAll(null, e.getXOnScreen(), e.getYOnScreen()+37,"当前版本:"+version, Integer.parseInt(versionLen));
				bubble.setVisible(true);
				bubble2.setVisible(true);
				
				menu_JLabel.setIcon(menu_ImageIcon_highlight);
			}
		});
		
		// 中部布局
		// 查询按钮相关事件
		query_Btn_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				query_Btn_JLabel.setIcon(query_ImageIcon_highlight);
				querUser(jFrame);
			}
			@Override
			public void mousePressed(MouseEvent e) {
				query_Btn_JLabel.setIcon(query_ImageIcon_down);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				query_Btn_JLabel.setIcon(query_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				query_Btn_JLabel.setIcon(query_ImageIcon_highlight);
			}
		});
		username_JTextField.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20, "输入学号,如:2011585043", 150);
				bubble.setVisible(true);
			}
		});
		username_JTextField.addKeyListener(new KeyAdapter() {
			
			@Override
			public void keyReleased(KeyEvent e) {
				if (e.getKeyCode() == 10){
					query_Btn_JLabel.setIcon(query_ImageIcon_normal);
					querUser(jFrame);
				}
			}
			
			@Override
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == 10){
					query_Btn_JLabel.setIcon(query_ImageIcon_down);
				}
			}
		});
		// 添加底部Label鼠标事件
		copy_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				copy_JLabel.setIcon(copy_ImageIcon_highlight);
				
				ClipBoardUtil.copyToClipBoard(result_JTextArea.getText());
			}
			@Override
			public void mousePressed(MouseEvent e) {
				bubble.closeTipRapid();
				
				copy_JLabel.setIcon(copy_ImageIcon_down);
				bubble.setAll(daxiaoIcon, e.getXOnScreen(), e.getYOnScreen()+20, "   复制成功,可以粘贴了哦", 160);
				bubble.setVisible(true);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
				
				copy_JLabel.setIcon(copy_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20, "复制所有", null);
				bubble.setVisible(true);
				
				copy_JLabel.setIcon(copy_ImageIcon_highlight);
			}
		});
		// 下载其他版本
		download_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				download_JLabel.setIcon(download_ImageIcon_highlight);
				
				// 打开链接
		        String osName = System.getProperties().getProperty("os.name");
		        String url = basePro.getProperty("check_updateurl");
		        try {
			        if (osName.indexOf("Linux") != -1) {
			            
						Runtime.getRuntime().exec("htmlview");
						
			        } else if (osName.indexOf("Windows") != -1){
			            Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+url);
			        } else {
			        }
		        } catch (IOException e1) {
//					e1.printStackTrace();
		        	bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20, "出问题了!", null);
		        	bubble.setVisible(true);
				}
			}
			@Override
			public void mousePressed(MouseEvent e) {
				bubble.closeTipRapid();
				
				download_JLabel.setIcon(download_ImageIcon_down);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
				
				download_JLabel.setIcon(download_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				bubble.setAll(null, e.getXOnScreen(), e.getYOnScreen()+20, "下载其他版本(需联网)", null);
				bubble.setVisible(true);
				
				download_JLabel.setIcon(download_ImageIcon_highlight);
			}
		});
		// 联系我
		contactMe_JLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				contactMe_JLabel.setIcon(contactMe_ImageIcon_highlight);
				Point p = jFrame.getLocation();
				
				new ContactView(p.x-60,p.y+50,jFrame);
			}
			@Override
			public void mousePressed(MouseEvent e) {
				bubble.closeTipRapid();
				
				contactMe_JLabel.setIcon(contactMe_ImageIcon_normal);
			}
			@Override
			public void mouseExited(MouseEvent e) {
				bubble.closeTip();
				
				contactMe_JLabel.setIcon(contactMe_ImageIcon_normal);
			}
			@Override
			public void mouseEntered(MouseEvent e) {
				bubble.setAll(blueMobileIcon, e.getXOnScreen(), e.getYOnScreen()+20, "   联系我.反馈BUG,建议.", 160);
				bubble.setVisible(true);
				
				contactMe_JLabel.setIcon(contactMe_ImageIcon_highlight);
			}
		});
		
		// 北部布局,拖动窗口移动事件添加
		north_JPanel.addMouseMotionListener(new MouseMotionAdapter() {
			// 按下并拖动
			public void mouseDragged(MouseEvent e) {
				int X = QueryView.M_X;
				int Y = QueryView.M_Y;

				jFrame.setLocation(e.getXOnScreen()-X, e.getYOnScreen()-Y);
			}
		});
		north_JPanel.addMouseListener(new MouseAdapter(){
			@Override
			public void mousePressed(MouseEvent e) {
				QueryView.M_X = e.getX();
				QueryView.M_Y = e.getY();
			}
		});
	}
	
	// 根据图标返回一个标签
	public JLabel getJLabelByIcon(String text, Icon icon){
		JLabel jLabel = null;
		if (text != null){
			jLabel = new JLabel(text,icon,JLabel.CENTER);
			jLabel.setSize(icon.getIconWidth(), icon.getIconHeight());
			jLabel.setHorizontalTextPosition(JLabel.CENTER);
		}else{
			jLabel = new JLabel(icon);
			jLabel.setSize(icon.getIconWidth(), icon.getIconHeight());
		}
		
		return jLabel;
	}
	
	private void querUser(final QueryView jFrame) {
		final Point p = jFrame.getLocation();
		String isCheck = basePro.getProperty("is.chect.count");
		if (!"no".equals(isCheck)){
			// 检测用户是否可用
			try {
				boolean isCanUse = CheckUseCount.isCanUse();
				if (!isCanUse){
					messageView = new MessageView(background_message,smile_cryIcon,null,"对不起,您的使用次数已用完.",180,jFrame);
					new Thread(){
						public void run() {
							try{
								Thread.sleep(2000);
								messageView.closeView();
							} catch (Exception e1) {
								messageView.closeView();
							}
						}
					}.start();
					messageView.showMessage(p.x-10, p.y+100);	// 会堵塞当前窗口线程
					return;
				}
			} catch (IOException e2) {
				messageView = new MessageView(background_message,smile_cryIcon,null,"出错了...",100,jFrame);
				new Thread(){
					public void run() {
						try{
							Thread.sleep(2000);
							messageView.closeView();
						} catch (Exception e1) {
							messageView.closeView();
						}
					}
				}.start();
				messageView.showMessage(p.x-10, p.y+100);	// 会堵塞当前窗口线程
			}
		}
		
		messageView = new MessageView(background_message,smile_naughtyIcon,progressIcons,"努力查询中...", null, jFrame);
		new Thread(){
			public void run() {
				boolean isHave = false;
				try {
					// 查询账号代码
					String stunum = username_JTextField.getText();
					String user = null;
//					System.out.println(stunum);
					for (int i = 0; i < 50; i++){
						if (i < 10){
							user = stunum +"0"+i;
						}else{
							user = stunum+i;
						}
						//System.out.println(user);
						String queryResult = GetUserInfo.getInfo(user);
						
						if (queryResult != null){
							isHave = true;
							result_JTextArea.append(queryResult+"\r\n");
						}
					}// 查询结束
					result_JTextArea.append("------------------\r\n");
					messageView.closeViewRapid();
					
					if (isHave){
						messageView = new MessageView(background_message,smile_teethIcon,null,"学弟学妹对不住了...",180,jFrame);
						new Thread(){
							public void run() {
								try{
									Thread.sleep(2000);
									messageView.closeView();
								} catch (Exception e1) {
									messageView.closeView();
								}
							}
						}.start();
						messageView.showMessage(p.x-10, p.y+100);	// 会堵塞当前窗口线程
					}else{
						messageView = new MessageView(background_message,smile_cryIcon,null,"太不给力了,学弟学妹聪明了.", 180, jFrame);
						new Thread(){
							public void run() {
								try{
									Thread.sleep(2000);
									messageView.closeView();
								} catch (Exception e1) {
									messageView.closeView();
								}
							}
						}.start();
						messageView.showMessage(p.x-10, p.y+100);	// 会堵塞当前窗口线程
					}
					
				} catch (Exception e1) {
					messageView.closeViewRapid();
					messageView = new MessageView(background_message,smile_foolIcon,null,"请在烟大校内网使用...", 180, jFrame);
					new Thread(){
						public void run() {
							try{
								Thread.sleep(2000);
								messageView.closeView();
							} catch (Exception e1) {
								messageView.closeView();
							}
						}
					}.start();
					messageView.showMessage(p.x-10, p.y+100);	// 会堵塞当前窗口线程
				}
			}
		}.start();
		messageView.showMessage(p.x-10, p.y+100);	// 会堵塞当前窗口线程
	}
	
}

《java-----我的第一款像样的小软件》---运用了jsoup,jmail,多线程,文件的io操作等等_第1张图片

你可能感兴趣的:(《java-----我的第一款像样的小软件》---运用了jsoup,jmail,多线程,文件的io操作等等)