概述

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);
}
} }); } }

Swing使用JavaFXweb组件的更多相关文章

  1. 实验十四 第九组 张燕~杨蓉庆~杨玲 Swing图形界面组件

    实验十四  Swing图形界面组件 8-11-29 理论知识 Swing和MVC设计模式 (1)设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 ...

  2. Swing的GUI组件得到焦点

    Swing的GUI组件如JButtin,JTextArea,JRadioButton,JComboBox等,可以使用requestFocus()方法来获得焦点.

  3. 实验十四 Swing图形界面组件

    实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和 ...

  4. JAVA学习Swing章节按钮组件JButton的简单学习

    package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; ...

  5. 详解Swing中JTree组件的功能

    JTree组件是另外一个复杂组件,它不像 JTable 那样难用,但是也不像 JList 那么容易.使用 JTree 时麻烦的部分是它要求的数据模型. JTree组件的功能来自树的概念,树有分支和叶子 ...

  6. Java Swing 树状组件JTree的使用方法(转)

    树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识.展开 节点是一个非叶节点(由返回 false 的 TreeModel ...

  7. 第13章 Swing程序设计----标签组件与图标

    在Swing中显示文本或提示信息的方法是使用标签.本节将探讨Swing标签的用法.如何创建标签,以及如何在标签上放置文本和图标. 1.标签的使用 标签可以显示一行只读文本.一个图像或带图像的文本,它并 ...

  8. Swing 布局时 组件大小问题

    在JFrame中放置了几个JPanel ,想调整JPanel大小,一直无效. 问题在于: 因为JPanel A的四周没有添加任何组件,所以JPanel B会把JPanel A填满.这种情况想固定JPa ...

  9. Swing列表框组件

    public class JListTest extends JFrame{    private static final long serialVersionUID=1L;        publ ...

随机推荐

  1. 设计模式——桥接模式(C++实现)

    [root@ ~/learn_code/design_pattern/18_bridge]$ cat Abstraction.h #ifndef _ABSTRACTION_H_ #define _AB ...

  2. 原生js怎样获取后台端口数据

    全称: XMLHttpReques <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  3. Java大世界

    "java越来越过份了." php狠狠的说,他转头看着C:"C哥,您可是前辈,java最近砸了我不少场子,你老再不出来管管,我怕他眼里就没有您了啊." C哥吸烟 ...

  4. Python基础-week04

    本节内容摘要:#Author:http://www.cnblogs.com/Jame-mei 装饰器 迭代器&生成器 Json & pickle 数据序列化 软件目录结构规范 作业:A ...

  5. Y2K问题

    关于第五章 团队和流程 2.6 特工团队中所提到的Y2K问题,第一次接触到这个名词去百度了,它的意思是这样的:year 2K problem,又称千年虫问题.主要原因是早期的软件大多以两位数字来记录年 ...

  6. Android工程化开发这门学科的看法

    http://www.cnblogs.com/unruledboy/p/DevCareer.html http://coolshell.cn/articles/4561.html http://blo ...

  7. Spring boot 应用打包部署

    1.Spring Boot内置web spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定 ...

  8. 【CSS】 CSS的一些应用实例和参考

    css 一些应用实例 基本抄自http://www.w3school.com.cn/css/css_align.asp ..把这些知识消化吸收然后以自己的话来解释一下 ■ 对齐 ●  用margin属 ...

  9. 设计模式 --> (9)代理模式

    代理模式 为其他对象提供一种代理以控制对这个对象的访问. 主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上.在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大 ...

  10. python多进程并发redis

    Redis支持两种持久化方式RDB和AOF,RDB持久化能够快速的储存和回复数据,但在服务器停机时会丢失大量数据,AOF持久化能够高效的提高数据的安全性,但在储存和恢复数据方面要耗费大量的时间,最好的 ...