• Swing使用JavaFXweb组件


    概述

    swing中内嵌入web组件的 需要使用一些其他的jar包 ,但是如果使用javafx的组件,那么也比较的方便,性能也比较高.

    代码

    • webview 在javafx 中是作为 scene出现的所以不需要单独设置部件类型.

    • 下面是单独的地址处理方法

    private static void gotoURL(String url) {
    		Platform.runLater(new Runnable() {
    			@Override
    			public void run() {
    				webView.getEngine().load(url);
    			}
    		});
    	}
    
    
    • swing嵌入fx 一般的写法
      这里注意 webview 最好是 静态化
    	Platform.runLater(new Runnable() {
    			@Override
    			public void run() {
    				webView = new WebView();
    				jFXPanel.setScene(new Scene(webView));
    				webView.getEngine().load("http://www.baidu.com");
    			}
    		});
    
    • 剩下的就是布局处理 你喜欢就好 , 这里我选择的了一个splash,出场动画, 可要可不要.
    
    public class SwingFinal {
    
    	static WebView webView = null;
    
    	private static void gotoURL(String url) {
    		Platform.runLater(new Runnable() {
    			@Override
    			public void run() {
    				webView.getEngine().load(url);
    			}
    		});
    	}
    
    	/**
    	 * @param args
    	 *            the command line arguments
    	 * @throws URISyntaxException
    	 */
    	public static void main(String[] args) throws MalformedURLException, URISyntaxException {
    		// TODO code application logic here
    		JFrame frame = new JFrame();
    		frame.setLayout(new BorderLayout());
    		frame.setSize(800, 600);
    		frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    		JFXPanel jFXPanel = new JFXPanel();
    		frame.add(jFXPanel, "Center");
    
    		JPanel controlPanel = new JPanel();
    		frame.add(controlPanel, "North");
    		JTextField urlField = new JTextField();
    		JButton goButton = new JButton("GO");
    		///////////////////////////////////////////////////////////////////////////////////
    		urlField.setText("http://www.baidu.com");
    
    		controlPanel.setLayout(new BorderLayout());
    		urlField.setPreferredSize(new Dimension(frame.getWidth() - 100, 1));
    		controlPanel.add(urlField, BorderLayout.WEST);
    		controlPanel.add(goButton, BorderLayout.EAST);
    
    		controlPanel.addComponentListener(new ComponentAdapter() {
    			@Override
    			public void componentResized(ComponentEvent e) {
    				controlPanel.setLayout(new BorderLayout());
    				urlField.setPreferredSize(new Dimension(frame.getWidth() - 100, 1));
    				controlPanel.add(urlField, BorderLayout.WEST);
    				controlPanel.add(goButton, BorderLayout.EAST);
    			}
    
    		});
    		frame.addWindowStateListener(new WindowStateListener() {
    			@Override
    			public void windowStateChanged(WindowEvent e) {
    				controlPanel.setLayout(new BorderLayout());
    				urlField.setPreferredSize(new Dimension(frame.getWidth() - 100, 1));
    				controlPanel.add(urlField, BorderLayout.WEST);
    				controlPanel.add(goButton, BorderLayout.EAST);
    			}
    		});
    		goButton.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				String urlString = urlField.getText();
    				gotoURL(urlString);
    			}
    
    		});
    		Platform.runLater(new Runnable() {
    			@Override
    			public void run() {
    				webView = new WebView();
    				jFXPanel.setScene(new Scene(webView));
    				webView.getEngine().load("http://www.baidu.com");
    			}
    		});
    
    		JWindow splashWindow = new JWindow();
    		splashWindow.setSize(1024, 768);
    		splashWindow.setLocationRelativeTo(null);
    		splashWindow.setLayout(new BorderLayout());
    		File file = new File(SwingFinal.class.getResource("fox.png").toURI());
    		ImageIcon icon = new ImageIcon(file.toURL());
    		JLabel label = new JLabel(icon);
    		splashWindow.add(label);
    		Thread t = new Thread() {
    			public void run() {
    				frame.setVisible(false);
    				splashWindow.setVisible(true);
    				try {
    					Thread.sleep(5000);
    				} catch (InterruptedException ex) {
    					Logger.getLogger(SwingFinal.class.getName()).log(Level.SEVERE, null, ex);
    				}
    				splashWindow.setVisible(false);
    				frame.setVisible(true);
    
    			}
    		};
    		t.setDaemon(true);
    		t.start();
    		frame.addWindowListener(new WindowAdapter() {
    			@Override
    			public void windowClosing(WindowEvent e) {
    				if (JOptionPane.showConfirmDialog(null, "????", "??�?", JOptionPane.YES_NO_OPTION,
    						JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
    					System.exit(0);
    				}
    			}
    
    		});
    
    	
    	}
    
    }
    
  • 相关阅读:
    cxGrid 锁定列
    精选网站
    Delphi XE10 dxLayoutControl 控件应用指南
    合并当前工作簿下的所有工作表
    【集中工作薄】 当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中
    CxGrid如何实现导出Excel 功能
    Google Material Design的图标字体使用教程
    Mui沉浸模式以及状态栏颜色改变
    移动端弹性效果
    JS中的“!!”
  • 原文地址:https://www.cnblogs.com/dgwblog/p/8309570.html
Copyright © 2020-2023  润新知