- 开发工具准备JavaFX Scene Builder 2.0,idea
- 打开idea,新建工程
- 新建后工程结构
说明:main为入口函数,sample.fxml就是窗口布局,类似android的xml页面布局。control负责控制和协调窗口下组件 - 使用JavaFX Scene Builder 2.0打开sample.fxml
说明:图中可拖拽组件,该图中有组件imageview,button,mediaview
对应的FXML:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.media.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<GridPane alignment="center" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<columnConstraints>
<ColumnConstraints />
</columnConstraints>
<rowConstraints>
<RowConstraints />
</rowConstraints>
<children>
<AnchorPane prefHeight="565.0" prefWidth="870.0">
<children>
<ImageView fitHeight="565.0" fitWidth="873.0" layoutY="-1.0" pickOnBounds="true">
<image>
<Image url="http://img.zcool.cn/community/01d881579dc3620000018c1b430c4b.JPG@3000w_1l_2o_100sh.jpg" />
</image>
</ImageView>
<Button layoutX="3.0" layoutY="-1.0" mnemonicParsing="false" onAction="#clickme" text="点我呀" />
<MediaView fx:id="mv" fitHeight="565.0" fitWidth="873.0" layoutX="2.0" layoutY="29.0" />
</children>
</AnchorPane>
</children>
</GridPane>
- 控制器
package sample;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
public class Controller {
@FXML
private MediaView mv;
@FXML
private void clickme(ActionEvent event) throws Exception {
String media_URL = this.getClass().getResource("/VID_20170830_221609.mp4").toString();
Media media = new Media(media_URL);
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true); //设置自动播放
mv.setMediaPlayer(mediaPlayer);
}
}
说明:注解FXML装载FXML文件,/VID_20170830_221609.mp4为class路径下文件,clickme为按钮onAction函数
6. 主函数main
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("xxx");
primaryStage.setIconified(false);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
- shift+ctrl+alt+s,设置如下,打包结果见out目录