javafx如何导入文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javafx如何导入文件相关的知识,希望对你有一定的参考价值。

参考技术A FXML 控制器 :

@FXML public void selectExcel(MouseEvent event)
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("选择Excel文件");
Stage selectFile = new Stage();
fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("All Excel", "*.xlsx"), new FileChooser.ExtensionFilter("XLS", "*.xls"), new FileChooser.ExtensionFilter("XLSX", "*.xlsx"));
File file = fileChooser.showOpenDialog(selectFile); if (file != null) try
bom.initBOM(ExcelUtil.importExcel(Util.getWorkbok(new FileInputStream(file), file)));
session.commit();
session.close();

catch (FileNotFoundException e) // TODO Auto-generated catch block e.printStackTrace();
catch (IOException e) // TODO Auto-generated catch block e.printStackTrace();



导入 javafx 无法解析

【中文标题】导入 javafx 无法解析【英文标题】:The import javafx cannot be resolved 【发布时间】:2015-12-14 07:46:53 【问题描述】:

我今天在我的 Ubuntu Linux 上安装了 Eclipse IDE,然后使用“安装新软件”安装了 JavaFX,当我创建 javafx 项目时,我在 Main.java 中收到以下错误:

无法解析导入 javafx。

所以,我列出了以下目录来搜索“jfxrt.jar”:

ls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext

但我没有找到“jfxrt.jar”。

java -version

输出:

openjdk 版本“1.8.0_45-internal”

OpenJDK 运行时环境(构建 1.8.0_45-internal-b14)

OpenJDK 64 位服务器 VM(内部版本 25.45-b02,混合模式)

【问题讨论】:

AFAIK OpenJDK 不附带 JavaFX。您需要在其上安装 OpenJFX。见wiki.openjdk.java.net/display/OpenJFX/Main 我安装了 JDK 8,JavaFX 也安装了它。谢谢。 【参考方案1】:

以下是在 Ubuntu Linux 上使用 Maven 进行设置的方法:

1) 安装 OpenJFX 包,检查文件放在哪里。

      sudo apt install openjfx
      dpkg-query -L openjfx

您最终可能会得到 JDK 11 的版本。在这种情况下,请安装新的 OpenJDK,或者为 JDK 8 设置 OpenJFX 的版本。

2) 将其作为 system-scoped 依赖项放入您的 Maven 项目中。

请注意,这是一种懒惰且不太好的方式。正确地,您应该像这样安装 jar:

dpkg-query -L openjfx | grep -E '.jar$' | xargs -l -I \
  mvn install:install-file -Dfile="" -DgroupId=javafx \
    -DartifactId=$(echo $JAR | tr '.' '-') -Dversion=1.0 -Dpackaging=jar

然后将其用作普通的compile-scoped 依赖项。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.source.level>1.8</project.source.level>
    <project.target.level>1.8</project.target.level>

    <javafx.dir>/usr/share/openjfx/lib</javafx.dir>
</properties>

<dependencies>

    <!-- JavaFx :
      sudo apt install openjfx
      dpkg-query -L openjfx
    -->
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>$javafx.dir/javafx.base.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>$javafx.dir/javafx.controls.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>$javafx.dir/javafx.fxml.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>$javafx.dir/javafx.graphics.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx-media</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>$javafx.dir/javafx.media.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx-swing</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>$javafx.dir/javafx.swing.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>javafx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>$javafx.dir/javafx.web.jar</systemPath>
    </dependency>

</dependencies>

【讨论】:

【参考方案2】:

A) 确保您使用的是兼容的 JDK,例如 1.8,并且

B) 在 Eclipse Project Facets 中配置兼容的 Java 版本。

    右键单击Java项目,选择属性 选择Project Facets,找到Java,设置1.8版

对于 Java 11,也会出现此错误,因为 JavaFX 已从 Java 11 中删除并作为独立版本提供

更多信息: https://blogs.oracle.com/java-platform-group/the-future-of-javafx-and-other-java-client-roadmap-updates

【讨论】:

英文 Eclipse 中没有 facets。【参考方案3】:

对于 Java Compiler 8 或更高版本,请执行以下操作:

    右键单击项目 选择构建路径 ----> 添加库

然后您将看到以下屏幕截图:

确保您已经下载并安装了 JDK 8 或更高版本

当您按下完成按钮时,代码中的所有 Java FX 错误都会消失。

注意先决条件:

在 NetBeans 8.0.1 上安装和测试 JDK 9

【讨论】:

【参考方案4】:

根据 Ubuntu Vivid 中的packages list,有一个名为 openjfx 的包。这应该是您正在寻找的候选人:

JavaFX/OpenJFX 8 - Java 的富客户端应用平台

您可以通过以下方式安装它:

sudo apt-get install openjfx

它为 Ubuntu 系统上的 OpenJDK 安装提供 following JAR files:

/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfxswt.jar
/usr/lib/jvm/java-8-openjdk-amd64/lib/ant-javafx.jar
/usr/lib/jvm/java-8-openjdk-amd64/lib/javafx-mx.jar

希望这会有所帮助。

【讨论】:

为什么必须手动下载包?不是嵌入到jdk里面吗? 不,这些文件是分开分发的。 是的,我找到了。 javafx 与 jdk 分离,因为我认为 jdk11 @Panagiss - 即使是从 8 开始的版本,OpenJDK 也不包含 javafx。

以上是关于javafx如何导入文件的主要内容,如果未能解决你的问题,请参考以下文章

javafx中每个.css文件和行的“未知属性”警告

JavaFX未使用Java 8导入

在javaFX 3D项目中使用文件与代码

JavaFx:采用SceneBuilder方式实现格式化java源文件(引入fxml文件完成样式布局)

SBT 导入空的基于 JavaFX 的 jar

使用 Javafx(netbeans) 在 SQLITE 数据库中插入 PDF 或任何类型的文件