如何在java中直接调用javaFX

如何在java中直接调用javaFX,第1张

当我们完成了MyScene类后,可以开始写Java的主程序了,这是个标卜绝准的Swing程序中调用JavaFX代码如下:

package swingtest/** * JavaFXToSwingTest.java http://www.javafxblogs.com * @author Henry Zhang */ import java.awt.* import javax.swing.* import org.jfxtras.scene.SceneToJComponentpublic class JavaFXToSwingTest extends JFrame { public static JTextField tf = new JTextField("JavaFX for SWING")public JavaFXToSwingTest() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE) setTitle("JavaFX in SWING Test")Container container = getContentPane() container.setLayout(new BorderLayout()) String sceneClass = "swingtest.MyScene" JComponent myScene = SceneToJComponent.loadScene(sceneClass) JLabel label = new JLabel(" Below is a JavaFX Animation: ") container.add(label, BorderLayout.NORTH) container.add(myScene, BorderLayout.CENTER) JPanel p = new JPanel() p.setLayout(new FlowLayout())tf.setColumns(28) p.add(tf) p.add(new JButton("SWING Button"))container.add(p, BorderLayout.SOUTH) pack() } public static void main(String args[]) { java.awt.EventQueue.invokeLater( new Runnable() { public void run() { new JavaFXToSwingTest().setVisible(true) } } } }

对大多数Java/Swing程序员来说,上述代码应该是很容易理解的。我们通过 BorderLayout和FlowLayout在Swing的窗口(JFrame)中布置了一些图形控件。有2行代码是和加载JavaFX的Scene相关的:

String sceneClass = "swingtest.MyScene" JComponent myScene = SceneToJComponent.loadScene(sceneClass)

其中SceneToJComponent类是从JFXtras项目中来的。它提供了loadScene()的方法,可以把JavaFX的Scene类加载到一个JComponent对象中, 从而可以型巧姿被Swing程序使用。运行这个程序,你可宽镇以看到一行文本”JavaFX for SWING”在窗口中央旋转。如果你在输入框中输入新的句子,你会发现旋转的文字也发生了改变。

在Swing程序中调用JavaFX代码是可行的,那么应该怎样编译和运行这样的程序呢。其实,JavaFX的功能也就是一些jar文件,因此和Java的结合方式还是比较简单的。编译的方法主要有两种,一种就是用JavaFX 的编译器Javafxc来编译Java和JavaFX代码。第二种就是用Javafxc编译JavaFX代码,用Javac编译Java代码,望采纳,谢谢。

哈哈~网上很多哈,森纤GUI我也不会,现学现卖一个

package swing

import javafx.embed.swing.JFXPanel

import javax.swing.*

import java.awt.*

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.text.DateFormat

import java.text.ParseException

import java.text.SimpleDateFormat

import java.util.Date

/**

* @author wenxy

* @create 2020-05-01

*/

public class JavaFxDate {

public static void main(String[] args) {

// 创建 JFrame 实例

JFrame frame = new JFrame()

// Setting the width and height of frame

frame.setSize(310, 180)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

/* 创建面板,这个类似于 HTML 的 div 标签

* 我们可以创建多个面板并在 JFrame 中指定位置

* 面板中我们可以添加文本字段,按钮及其他组件。

*/

JPanel panel = new JPanel()

// 添加面板

frame.add(panel)

/*

* 调用用户定义的方法并添加组件到面板

*/

placeComponents(panel)

// 设置界面可见

frame.setVisible(true)

}

private static void placeComponents(JPanel panel) {

/* 布局部分我们这边不此森仿多做介绍

* 这边设置布局为 null

*/

panel.setLayout(null)

// 创建 JLabel

JLabel userLabel = new JLabel("请输入日期字符串")

userLabel.setBounds(5, 5, 300, 25)

panel.add(userLabel)

/*

* 创建文本域用于用户输入

*/

JTextField userText = new JTextField(20)

userText.setBounds(5, 40, 200, 25)

panel.add(userText)

// 创建 JLabel

JLabel showLable = new JLabel()

showLable.setBounds(5, 70, 300, 25)

panel.add(showLable)

// 创建登录按钮

JButton loginButton = new JButton("转换")

loginButton.setBounds(180, 40, 100, 25)

loginButton.addActionListener(new ActionListener() {

DateFormat input = new SimpleDateFormat("yyyy-MM-dd"春尘)

DateFormat output = new SimpleDateFormat("yyyy年MM月dd日")

{

input.setLenient(false)   // 设置严格按格式匹配

output.setLenient(false)

}

@Override

public void actionPerformed(ActionEvent actionEvent) {

try {

Date date = convert(userText.getText())

showLable.setText("成功:" + output.format(date))

showLable.setForeground(Color.GREEN)

} catch (WrongDateException e) {

showLable.setText(e.getMessage())

showLable.setForeground(Color.RED)

}

}

private Date convert(String text) throws WrongDateException {

try {

return input.parse(text)

} catch (ParseException e) {

throw new WrongDateException(text)

}

}

})

panel.add(loginButton)

}

static class WrongDateException extends Exception {

WrongDateException(String s) {

super(s + "不是合法的日期字符串")

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12228543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存