Swing界面嵌套浏览器

package com.*;

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.Date;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import chrriis.common.UIUtils;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserCommandEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserListener;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserNavigationEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserWindowOpeningEvent;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserWindowWillOpenEvent;

/**
 * 主窗体
 *
 * @author dxm
 *
 */
public class MainFrame extends JFrame {

	private static final long serialVersionUID = -6348199501339114346L;

	// 最后操作时间
	public long lastTime = new Date().getTime();

	// 浏览器窗体
	private JWebBrowser webBrowser = null;
	private JLabel lbl = null;
	private JPanel panel = null;

	private int type = 2;

	/**
	 * 构造器
	 */
	public MainFrame() {
		initData();
		initGUI();
		addListance();
	}

	private void initData() {

		Toolkit toolkit = Toolkit.getDefaultToolkit();

		this.setIconImage(new ImageIcon(System.getProperty("user.dir") + "\\5.jpg").getImage());
		this.setUndecorated(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(600, 500);
		this.setLocationRelativeTo(null);
		this.setSize(toolkit.getScreenSize());
		this.setLocation(0, 0);

		webBrowser = new JWebBrowser();
		webBrowser.navigate(Config.url);
		webBrowser.setBarsVisible(false);
		webBrowser.setMenuBarVisible(false);
		webBrowser.setLocationBarVisible(false);
		webBrowser.setButtonBarVisible(false);
		webBrowser.setStatusBarVisible(false);

		ImageIcon icon = new ImageIcon(System.getProperty("user.dir") + "\\5.jpg");
		File img = new File(System.getProperty("user.dir") + "\\" + Config.img);
		if (img.exists()) {
			icon = new ImageIcon(img.getAbsolutePath());
		}
		lbl = new JLabel(icon);

		panel = new JPanel(new BorderLayout());
	}

	private void initGUI() {
		panel.add(webBrowser, BorderLayout.CENTER);
		this.setContentPane(panel);
	}

	private void addListance() {

		webBrowser.addWebBrowserListener(new WebBrowserListener() {

			@Override
			public void windowWillOpen(WebBrowserWindowWillOpenEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void windowOpening(WebBrowserWindowOpeningEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void windowClosing(WebBrowserEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void titleChanged(WebBrowserEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void statusChanged(WebBrowserEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void locationChanging(WebBrowserNavigationEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void locationChanged(WebBrowserNavigationEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void locationChangeCanceled(WebBrowserNavigationEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void loadingProgressChanged(WebBrowserEvent arg0) {
				lastTime = new Date().getTime();
			}

			@Override
			public void commandReceived(WebBrowserCommandEvent arg0) {
				lastTime = new Date().getTime();
			}
		});

		lbl.addMouseListener(new MouseListener() {

			@Override
			public void mouseReleased(MouseEvent arg0) {
			}

			@Override
			public void mousePressed(MouseEvent arg0) {
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
			}

			@Override
			public void mouseClicked(MouseEvent arg0) {
				change(2);
			}
		});

	}

	/**
	 * 屏保切换
	 */
	public void change(final int type) {
		lastTime = new Date().getTime();

		if (type == this.type) {
			return;
		}
		this.type = type;

		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				if (type == 1) {
					webBrowser.setVisible(false);
					panel.add(lbl, BorderLayout.CENTER);
				} else {
					panel.remove(lbl);
					webBrowser.setVisible(true);
				}
				panel.validate();
			}
		});
	}

	public static void main(String[] args) {
		UIUtils.setPreferredLookAndFeel();
		NativeInterface.open();
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				MainFrame frame = new MainFrame();
				frame.setVisible(true);
				new ChangeWait(frame).tryStart();
			}
		});
		NativeInterface.runEventPump();
	}

}
jar包下载地址 http://download.csdn.net/detail/daixinmei/7827723
时间: 2024-08-08 07:22:58

Swing界面嵌套浏览器的相关文章

Java Swing界面编程(24)---事件处理:键盘事件及监听处理

在Swing的事件处理中也可以对键盘的操作进行监听,直接使用KeyListener接口即可. package com.beyole.util; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax

Java Swing界面编程(25)---事件处理:鼠标事件及监听处理

如果想对一个鼠标的操作进行监听,如果鼠标按下.松开等,则可以使用MouseListener接口. package com.beyole.util; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import

Java Swing界面编程(1)

写多了jsp,对于页面式的系统已经写烦了,本人也開始着手于java swing的学习,作为菜鸟,仅想用博客记录下我的swing学习的历程.话不多说,首先開始我的第一个窗体化程序. 下面给出源码: package com.beyole.util; import java.awt.Color; import javax.swing.JFrame; public class test1 { public static void main(String[] args) { JFrame frame=ne

Java Swing界面编程(23)---事件处理:编写用户验证登录用例

LoginCheck: package com.beyole.util; class LoginCheck {//编写登录验证类 private String userName;//用户名 private String password;//密码 public LoginCheck(String userName,String password)//复写构造方法 { this.userName=userName;//为用户名赋值 this.password=password;//为密码赋值 }

Java Swing界面编程(21)---事件处理:窗体事件

Splay树的插入操作,只需要处理好插入节点的孩子节点就可以了,最重要的是不要破坏了BST的基本规则. 因为高度并不是Splay树的首要因素,所以插入的时候也是使用splay操作,然后在根节点插入. 参考:http://www.geeksforgeeks.org/splay-tree-set-2-insert-delete/ 对比一下使用插入创建的树和手工创建数的区别,先序遍历的结果: #pragma once #include<stdio.h> #include <stdlib.h&g

Java Swing界面编程(28)---复选框:JCheckBox

程序可以通过JRadioButton实现单选按钮的功能,那么要实现复选框的功能,则必须使用JCheckBox完成. package com.beyole.util; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import

Java Swing界面编程(22)---事件处理:动作事件及监听处理

要想让一个按钮变得有意义,就必须使用事件处理.在swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件. package com.beyole.util; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter

Swing界面刷新问题(转)

在Java Swing编程中,往往会遇到需要动态刷新界面的时候,例如动态刷新JLabel的文本,JTextField里的文本等等.但是往往却没有达到我们预期的效果,我相信很多朋友都遇到过本文将要说的这个问题. 如下图的Swing界面中,我们期望在点击按钮时,Jlabel和JTextField里的文本能不断的变化,并实时地显示出来. 这个例子中,我们期望点击按钮后,JLabel和JTextField中每隔一秒钟刷新一下文本,顺序的显示以下的几句文本: Button clicked Start to

Java Swing界面编程(29)---JCheckBox事件处理

JCheckBox和JRadioButton的事件处理监听接口是一样的,都是使用ItemListener接口. package com.beyole.util; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.WindowAdapter; import j