网站cms模板,网络域名,上海公司注册核名,网站建设国外拂去其Java-JFrame-swing嵌套浏览器步骤一、使用swing嵌套浏览器要实现的功能#xff1a;通过java的swing实现在一个窗体中嵌套一个浏览器#xff0c;可以在这个浏览器中将另一个项目的内容显示出来#xff0c;只需要回去另一个项目首页的url即可#xff0c;这样另一个项目就可以…Java-JFrame-swing嵌套浏览器步骤一、使用swing嵌套浏览器要实现的功能通过java的swing实现在一个窗体中嵌套一个浏览器可以在这个浏览器中将另一个项目的内容显示出来只需要回去另一个项目首页的url即可这样另一个项目就可以在swing嵌套的浏览器中进行正常的显示了二、下面的浏览器工具类中的方法在使用的时候只需要从另一个项目的服务端获取另一个项目的首页stirng类型的url地址和浏览器左上角要显示的string类型的标题两个参数即可参数只有url和title两个(1)主要步骤1、通过以下java代码实现创建浏览器2、创建JFrame窗体对窗体进行基本的设置3、设置浏览器显示的定位尺寸并将浏览器添加到JFrame窗体中去非常注意将浏览器添加到窗体的java代码一定在将浏览器顶部工具栏背景图片添加到窗体的java代码之后否则浏览器内容显示不出来4、设置浏览器顶部工具栏的左侧图标5、设置浏览器顶部工具栏的左侧标题文字6、设置浏览器顶部工具栏右侧最小化、最大化、关闭等图片以及鼠标的各种事件7、为窗体添加一个事件当窗体的尺寸发生变化时就会执行方法体中的Java代码因为窗体的大小是可以变化的8、非常重要的是浏览器工具类中一定要下面的一行代码注释掉否则其他窗体调用此窗体时不会弹出此窗体// 必须将下行代码注释掉否则不能够跳转到此窗体// NativeInterface.runEventPump();(2)浏览器的工具类全部代码如下package com;import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.Image;import java.awt.Rectangle;import java.awt.event.ComponentAdapter;import java.awt.event.ComponentEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JLayeredPane;import javax.swing.JPanel;import javax.swing.JRootPane;import javax.swing.SwingUtilities;import com.listener.XZWebBrowserListener;import com.util.ScreenSize;import chrriis.common.UIUtils;import chrriis.dj.nativeswing.swtimpl.NativeInterface;import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;/*** CS包浏览器首先访问的是项目首页** author admin**/public class EagleBrowser1 extends JPanel {private static final long serialVersionUID 1L;private JPanel webBrowserPanel;private JWebBrowser webBrowser;private JFrame frame;private Double browserWidth;// 窗体宽度private Double browserHeight;//窗体高度public EagleBrowser1() {}// 构造方法传递url和title可创建CS包容浏览器窗体public EagleBrowser1(String url, String title) {/*** 创建浏览器*/webBrowserPanel new JPanel(new BorderLayout());webBrowser new JWebBrowser();webBrowser.navigate(url);webBrowser.setButtonBarVisible(false);webBrowser.setMenuBarVisible(false);webBrowser.setBarsVisible(false);webBrowser.setStatusBarVisible(false);webBrowserPanel.add(webBrowser, BorderLayout.CENTER);XZWebBrowserListener listener new XZWebBrowserListener();webBrowser.addWebBrowserListener(listener );//add(webBrowserPanel, BorderLayout.CENTER);// webBrowser.executeJavascript(javascrpit:window.location.hrefhttp://www.baidu.com);// webBrowser.executeJavascript(alert(haha)); //执行Js代码UIUtils.setPreferredLookAndFeel();NativeInterface.open();SwingUtilities.invokeLater(new Runnable() {public void run() {//JFrame.setDefaultLookAndFeelDecorated(true);frame new JFrame();// 去掉窗口的装饰frame.setUndecorated(true);// 采用指定的窗口装饰风格frame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);frame.setLocationByPlatform(true);frame.setLayout(null);// 注意可见性、窗体大小、窗体居中定位这三个最好按照此顺序书写// 设置窗体可见frame.setVisible(true);frame.setResizable(true);// 设置窗体的宽度、高度frame.setSize(1600, 900);// 设置窗体居中显示frame.setLocationRelativeTo(frame.getOwner());/*** 获取窗体的总宽*/browserWidth frame.getSize().getWidth();browserHeight frame.getSize().getHeight();/*** 插入浏览器头部窄条的背景图片*/// 创建具有分层的JLayeredPaneJLayeredPane layeredPane new JLayeredPane();layeredPane.setBounds(0, 0, browserWidth.intValue(), 40);// 添加分层的JLayeredPaneframe.getContentPane().add(layeredPane,BorderLayout.CENTER);// 创建图片对象ImageIcon img new ImageIcon(EagleBrowser1.class.getResource(/images/browser_head.jpg));// 设置图片在窗体中显示的宽度、高度img.setImage(img.getImage().getScaledInstance(browserWidth.intValue(), 40, Image.SCALE_DEFAULT));JPanel panel new JPanel();panel.setBounds(0, 0, browserWidth.intValue(), 40);layeredPane.add(panel, JLayeredPane.DEFAULT_LAYER);//添加到最底层JLabel lblNewLabel new JLabel();panel.add(lblNewLabel);lblNewLabel.setIcon(img);/*** 将网页添加到窗体frame中来*///设置浏览器距离头部的距离高度webBrowserPanel.setBounds(0, 29, browserWidth.intValue(), browserHeight.intValue()-29);// 添加网页的JPanel注意定要将此行代码放置在添加JLayeredPane以下frame.getContentPane().add(webBrowserPanel, BorderLayout.CENTER);/*** 插入浏览器头部左边的图片*/// 创建图片对象ImageIcon headLeftImg new ImageIcon(EagleBrowser1.class.getResource(/images/browser_head_left.jpg));// 设置图片在窗体中显示的宽度、高度headLeftImg.setImage(headLeftImg.getImage().getScaledInstance(24, 40, Image.SCALE_DEFAULT));JPanel headLeftPanel new JPanel();headLeftPanel.setBounds(0, -5, 24, 40);layeredPane.add(headLeftPanel, JLayeredPane.MODAL_LAYER);//添加到比背景图片高一层的层次中JLabel headLeftLabel new JLabel();headLeftPanel.add(headLeftLabel);headLeftLabel.setIcon(headLeftImg);/*** 插入浏览器窗体左边的标题*/JPanel titlePanel new JPanel();titlePanel.setBounds(32, 6, browserWidth.intValue()-150, 20);layeredPane.add(titlePanel, JLayeredPane.MODAL_LAYER);//设置JPanel中文字对齐方式为左对齐titlePanel.setLayout(new FlowLayout(FlowLayout.LEFT));//设置JPanel为透明的这样可以让JPanel后面的背景颜色显示出来titlePanel.setBackground(null);titlePanel.setOpaque(false);JLabel titleLbel new JLabel();titleLbel.setText(title);titleLbel.setSize(100, 20);titleLbel.setHorizontalAlignment(JLabel.LEFT);titleLbel.setFont(new Font(微软雅黑, 0, 12));titleLbel.setForeground(Color.white);titlePanel.add(titleLbel);/*** 插入右边关闭背景图片及功能*/// 创建图片对象ImageIcon headCloseImg new ImageIcon(EagleBrowser1.class.getResource(/images/browser_close_01.jpg));// 设置图片在窗体中显示的宽度、高度headCloseImg.setImage(headCloseImg.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));JPanel headClosePanel new JPanel();headClosePanel.setBounds(browserWidth.intValue() - 40, -5, 40, 40);layeredPane.add(headClosePanel, JLayeredPane.MODAL_LAYER);JLabel headCloseLabel new JLabel();headClosePanel.add(headCloseLabel);headCloseLabel.setIcon(headCloseImg);headCloseLabel.addMouseListener(new MouseAdapter() {// 鼠标点击关闭图片实现关闭窗体的功能Overridepublic void mouseClicked(MouseEvent e) {frame.dispose();//此种方式的关闭只是关闭了窗体后台程序还是没有真正关闭System.exit(0);//此种方式是真正的关闭}// 鼠标进入换关闭的背景图片Overridepublic void mouseEntered(MouseEvent e) {// 创建图片对象ImageIcon closeImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_close_02.jpg));// 设置图片在窗体中显示的宽度、高度closeImg1.setImage(closeImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headCloseLabel.setIcon(closeImg1);}// 鼠标离开换关闭的背景图片Overridepublic void mouseExited(MouseEvent e) {// 创建图片对象ImageIcon headCloseImg new ImageIcon(EagleBrowser1.class.getResource(/images/browser_close_01.jpg));// 设置图片在窗体中显示的宽度、高度headCloseImg.setImage(headCloseImg.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headCloseLabel.setIcon(headCloseImg);}});/*** 插入右边最大化背景图片及功能*/// 创建图片对象ImageIcon headMaxImg new ImageIcon(EagleBrowser1.class.getResource(/images/browser_middle_01.jpg));// 设置图片在窗体中显示的宽度、高度headMaxImg.setImage(headMaxImg.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));JPanel headMaxPanel new JPanel();headMaxPanel.setBounds(browserWidth.intValue() - 40 - 40, -5, 40, 40);layeredPane.add(headMaxPanel, JLayeredPane.MODAL_LAYER);JLabel headMaxLabel new JLabel();headMaxPanel.add(headMaxLabel);headMaxLabel.setIcon(headMaxImg);headMaxLabel.addMouseListener(new MouseAdapter() {// 鼠标点击关闭图片实现关闭窗体的功能Overridepublic void mouseClicked(MouseEvent e) {// 判断窗体当前宽度如果与计算机分辨率同样宽那么窗体宽度变为默认值如果小于计算机分辨率宽度那么窗体变为最大化显示if (frame.getSize().getWidth() ScreenSize.getScreenWidth()) {//加入此行代码可以让窗体最大化不会遮挡住桌面上底部的工具栏frame.setMaximizedBounds(new Rectangle(0, 1, ScreenSize.getScreenWidth().intValue(), ScreenSize.getScreenHeight().intValue()));frame.setExtendedState(JFrame.MAXIMIZED_BOTH);// 窗体最大化// 创建图片对象ImageIcon maxImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_max_01.jpg));// 设置图片在窗体中显示的宽度、高度maxImg1.setImage(maxImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMaxLabel.setIcon(maxImg1);} else {frame.setSize(1600, 900);frame.setLocationRelativeTo(frame.getOwner());// 创建图片对象ImageIcon maxImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_middle_01.jpg));// 设置图片在窗体中显示的宽度、高度maxImg1.setImage(maxImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMaxLabel.setIcon(maxImg1);}}// 鼠标进入换关闭的背景图片Overridepublic void mouseEntered(MouseEvent e) {// 判断窗体当前宽度与计算机分辨率宽度大小if (frame.getSize().getWidth() ScreenSize.getScreenWidth()) {//窗体宽度小于计算机分辨率宽度图片应显示中间那种// 创建图片对象ImageIcon maxImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_middle_02.jpg));// 设置图片在窗体中显示的宽度、高度maxImg1.setImage(maxImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMaxLabel.setIcon(maxImg1);}else{// 创建图片对象ImageIcon maxImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_max_02.jpg));// 设置图片在窗体中显示的宽度、高度maxImg1.setImage(maxImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMaxLabel.setIcon(maxImg1);}}// 鼠标离开换关闭的背景图片Overridepublic void mouseExited(MouseEvent e) {// 判断窗体当前宽度与计算机分辨率宽度大小if (frame.getSize().getWidth() ScreenSize.getScreenWidth()) {//窗体宽度小于计算机分辨率宽度图片应显示中间那种// 创建图片对象ImageIcon maxImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_middle_01.jpg));// 设置图片在窗体中显示的宽度、高度maxImg1.setImage(maxImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMaxLabel.setIcon(maxImg1);}else{// 创建图片对象ImageIcon maxImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_max_01.jpg));// 设置图片在窗体中显示的宽度、高度maxImg1.setImage(maxImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMaxLabel.setIcon(maxImg1);}}});/*** 插入右边最小化背景图片及功能*/// 创建图片对象ImageIcon headMinImg new ImageIcon(EagleBrowser1.class.getResource(/images/browser_min_01.jpg));// 设置图片在窗体中显示的宽度、高度headMinImg.setImage(headMinImg.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));JPanel headMinPanel new JPanel();headMinPanel.setBounds(browserWidth.intValue() - 40 - 40 - 40, -5, 40, 40);layeredPane.add(headMinPanel, JLayeredPane.MODAL_LAYER);JLabel headMinLabel new JLabel();headMinPanel.add(headMinLabel);headMinLabel.setIcon(headMinImg);headMinLabel.addMouseListener(new MouseAdapter() {// 鼠标点击关闭图片实现关闭窗体的功能Overridepublic void mouseClicked(MouseEvent e) {frame.setExtendedState(JFrame.ICONIFIED);// 最小化窗体}// 鼠标进入换关闭的背景图片Overridepublic void mouseEntered(MouseEvent e) {// 创建图片对象ImageIcon mainImg1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_min_02.jpg));// 设置图片在窗体中显示的宽度、高度mainImg1.setImage(mainImg1.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMinLabel.setIcon(mainImg1);}// 鼠标离开换关闭的背景图片Overridepublic void mouseExited(MouseEvent e) {// 创建图片对象ImageIcon headMinImg new ImageIcon(EagleBrowser1.class.getResource(/images/browser_min_01.jpg));// 设置图片在窗体中显示的宽度、高度headMinImg.setImage(headMinImg.getImage().getScaledInstance(40, 40, Image.SCALE_DEFAULT));headMinLabel.setIcon(headMinImg);}});/*** 设置检测窗体大小发生变化的事件*/frame.addComponentListener(new ComponentAdapter() {Overridepublic void componentResized(ComponentEvent e) {/*** 获取尺寸变化后的窗体的宽度、高度*/browserWidth frame.getSize().getWidth();browserHeight frame.getSize().getHeight();/*** 浏览器顶部窄背景图片宽度改变*/layeredPane.setBounds(0, -5, browserWidth.intValue(), 34);titlePanel.setBounds(32, 6, browserWidth.intValue()-150, 20);// 创建图片对象ImageIcon img1 new ImageIcon(EagleBrowser1.class.getResource(/images/browser_head.jpg));// 设置图片在窗体中显示的宽度、高度img1.setImage(img1.getImage().getScaledInstance(browserWidth.intValue(), 40, Image.SCALE_DEFAULT));panel.setBounds(0, -5, browserWidth.intValue(), 40);panel.add(lblNewLabel);lblNewLabel.setIcon(img1);/*** 浏览器顶部窄条右侧最小化、最大化、关闭按钮图片根据宽度进行定位*/headClosePanel.setBounds(browserWidth.intValue() - 40, -5, 40, 40);// 浏览器顶部关闭图片定位headMaxPanel.setBounds(browserWidth.intValue() - 40 - 40, -5, 40, 40);// 浏览器顶部最大化图片定位headMinPanel.setBounds(browserWidth.intValue() - 40 - 40 - 40, -5, 40, 40);// 浏览器顶部最小化图片定位/*** 浏览器宽度、高度进行改变*///设置浏览器距离头部的距离高度webBrowserPanel.setBounds(0, 29, browserWidth.intValue(), browserHeight.intValue()-29);}});}});// 必须将下行代码注释掉否则不能够跳转到此窗体// NativeInterface.runEventPump();}public static void main(String[] args) {String url http://www.hao123.com;String title 测试CS包浏览器;EagleBrowser1 eagleBrowser new EagleBrowser1(url, title);}}上述代码中用到了获取当前计算机尺寸的工具类代码如下package com.util;import java.awt.Dimension;import java.awt.Toolkit;/*** 获取当前计算机分辨率的工具类* author admin**/public class ScreenSize {//获取当前计算机分辨率的宽度public static Double getScreenWidth(){Dimension screenSize Toolkit.getDefaultToolkit().getScreenSize();return screenSize.getWidth();}//获取当前计算机分辨率的高度public static Double getScreenHeight(){Dimension screenSize Toolkit.getDefaultToolkit().getScreenSize();return screenSize.getHeight();}}