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);
}
}
});
}
}
Swing使用JavaFXweb组件的更多相关文章
- 实验十四 第九组 张燕~杨蓉庆~杨玲 Swing图形界面组件
实验十四 Swing图形界面组件 8-11-29 理论知识 Swing和MVC设计模式 (1)设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 ...
- Swing的GUI组件得到焦点
Swing的GUI组件如JButtin,JTextArea,JRadioButton,JComboBox等,可以使用requestFocus()方法来获得焦点.
- 实验十四 Swing图形界面组件
实验十四 Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和 ...
- JAVA学习Swing章节按钮组件JButton的简单学习
package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; ...
- 详解Swing中JTree组件的功能
JTree组件是另外一个复杂组件,它不像 JTable 那样难用,但是也不像 JList 那么容易.使用 JTree 时麻烦的部分是它要求的数据模型. JTree组件的功能来自树的概念,树有分支和叶子 ...
- Java Swing 树状组件JTree的使用方法(转)
树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识.展开 节点是一个非叶节点(由返回 false 的 TreeModel ...
- 第13章 Swing程序设计----标签组件与图标
在Swing中显示文本或提示信息的方法是使用标签.本节将探讨Swing标签的用法.如何创建标签,以及如何在标签上放置文本和图标. 1.标签的使用 标签可以显示一行只读文本.一个图像或带图像的文本,它并 ...
- Swing 布局时 组件大小问题
在JFrame中放置了几个JPanel ,想调整JPanel大小,一直无效. 问题在于: 因为JPanel A的四周没有添加任何组件,所以JPanel B会把JPanel A填满.这种情况想固定JPa ...
- Swing列表框组件
public class JListTest extends JFrame{ private static final long serialVersionUID=1L; publ ...
随机推荐
- 设计模式——桥接模式(C++实现)
[root@ ~/learn_code/design_pattern/18_bridge]$ cat Abstraction.h #ifndef _ABSTRACTION_H_ #define _AB ...
- 原生js怎样获取后台端口数据
全称: XMLHttpReques <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- Java大世界
"java越来越过份了." php狠狠的说,他转头看着C:"C哥,您可是前辈,java最近砸了我不少场子,你老再不出来管管,我怕他眼里就没有您了啊." C哥吸烟 ...
- Python基础-week04
本节内容摘要:#Author:http://www.cnblogs.com/Jame-mei 装饰器 迭代器&生成器 Json & pickle 数据序列化 软件目录结构规范 作业:A ...
- Y2K问题
关于第五章 团队和流程 2.6 特工团队中所提到的Y2K问题,第一次接触到这个名词去百度了,它的意思是这样的:year 2K problem,又称千年虫问题.主要原因是早期的软件大多以两位数字来记录年 ...
- Android工程化开发这门学科的看法
http://www.cnblogs.com/unruledboy/p/DevCareer.html http://coolshell.cn/articles/4561.html http://blo ...
- Spring boot 应用打包部署
1.Spring Boot内置web spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定 ...
- 【CSS】 CSS的一些应用实例和参考
css 一些应用实例 基本抄自http://www.w3school.com.cn/css/css_align.asp ..把这些知识消化吸收然后以自己的话来解释一下 ■ 对齐 ● 用margin属 ...
- 设计模式 --> (9)代理模式
代理模式 为其他对象提供一种代理以控制对这个对象的访问. 主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上.在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大 ...
- python多进程并发redis
Redis支持两种持久化方式RDB和AOF,RDB持久化能够快速的储存和回复数据,但在服务器停机时会丢失大量数据,AOF持久化能够高效的提高数据的安全性,但在储存和恢复数据方面要耗费大量的时间,最好的 ...