package org.arong.egdownloader.ui.window; import java.awt.Color; import java.awt.Desktop; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.Map; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import org.arong.egdownloader.spider.WebClient; import org.arong.egdownloader.ui.ComponentConst; import org.arong.egdownloader.ui.IconManager; import org.arong.egdownloader.ui.swing.AJTextPane; import org.arong.egdownloader.version.Version; import org.arong.util.JsonUtil; /** * 【关于】菜单的窗口类 * * @author 阿荣 * @since 2014-05-21 * */ public class AboutMenuWindow extends JDialog { private static final long serialVersionUID = -6501253363937575294L; private AJTextPane aboutTextPane; /** * 加入参数mainWindow主要是使关于窗口始终在主窗口的中央弹出 * @param mainWindow */ public AboutMenuWindow(final JFrame mainWindow) { // 设置主窗口 this.setSize(340, 250); this.setIconImage(IconManager.getIcon("user").getImage()); this.setTitle("关于"); this.setVisible(true); this.setResizable(false); this.setLocationRelativeTo(mainWindow); //关闭监听,释放窗口资源,否则消耗大量CPU this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { AboutMenuWindow window = (AboutMenuWindow) e.getSource(); window.dispose(); } }); //添加鼠标活动监听器 this.addMouseListener(new MouseAdapter() { // 当鼠标点击当前窗口时隐藏此窗口 public void mouseClicked(MouseEvent e) { AboutMenuWindow window = (AboutMenuWindow) e.getSource(); window.dispose(); } }); aboutTextPane = new AJTextPane(ComponentConst.ABOUT_TEXTPANE_TEXT, Color.BLUE); final JDialog this_ = this; aboutTextPane.addHyperlinkListener(new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { //e.getDescription():a标签href值 if("checkVersion".equals(e.getDescription())){ //检查版本号 try { String egVersion = WebClient.getRequestUseJava(ComponentConst.EG_VERSION_URL, null); Map<String, String> version = JsonUtil.json2Map(egVersion); if(! Version.VERSION.equals(version.get("version"))){ int r = JOptionPane.showConfirmDialog(this_, "最新版本号为:" + version.get("version") + ",是否前往下载?"); if(r == JOptionPane.OK_OPTION){ try { Desktop.getDesktop().browse(new URI(version.get("url"))); } catch (IOException e1) { try { Runtime.getRuntime().exec("cmd.exe /c start " + version.get("url")); } catch (IOException e2) { } } catch (URISyntaxException e1) { try { Runtime.getRuntime().exec("cmd.exe /c start " + version.get("url")); } catch (IOException e2) { } } } }else{ JOptionPane.showMessageDialog(this_, "当前已是最新版本"); } } catch (Exception e1) { JOptionPane.showMessageDialog(this_, "检查版本失败,请确定网络是否可用"); } } } } }); this.getContentPane().add(aboutTextPane); } }