JavaFX Intellij onAction看起来像控制器没有涵盖

时间:2016-03-23 19:16:22

标签: java intellij-idea javafx fxml

我在JavaFX中创建了一个简单的Fxml应用程序。我添加了一个带有场景构建器的按钮和一个名为btnExit的动作: 完整的FXML文件(完全简单和新鲜生成)

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.GridPane?>
<GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.65" fx:controller="sample.Controller">
   <children>
      <Button mnemonicParsing="false" text="Button" onAction="#btnExit"/>
   </children>
</GridPane>

当我在我的控制器中创建动作时,IntelliJ告诉我它从未被使用过。

Look at the Controller displayed in my Intellij

以下是Controller类的完整代码:

package sample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;

public class Controller
{
    @FXML
    public void btnExit(ActionEvent actionEvent)
    {
        System.exit(0);
    }
}

在FXML文件中,我收到了预期类或接口的警告。 (#btnExit)。

in the fxml file it is underlined in red color

当我运行该程序时,一切正常,但令人讨厌的是它看起来像是错误的。我如何通过IntelliJ警告?

在我的所有项目中都会发生这种情况,所以我尝试通过&#34; File&#34;创建一个全新的IntelliJ。 &GT; &#34;新项目&#34; &GT; &#34; JavaFX应用程序&#34;。 我认为我的设置或jdk有问题,但我不知道它可能是什么。

ps:我是java和javaFX的新手

我已更新至intellij 2016并已重新安装:

IntelliJ IDEA 2016.1
Build #IC-145.258, built on March 17, 2016
JRE: 1.8.0_71-b15 amd64
JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation

1 个答案:

答案 0 :(得分:1)

我在Intellij IDE中加载了你的类,它运行正常。 FXML文件中没有出现红色下划线,并且FXD中的#btnExit点击了Controller导航到IntelliJ IDEA 2016.3.1 EAP Build #IU-163.9166.7, built on November 29, 2016 JRE: 1.8.0_112-release-408-b2 x86_64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o` 中相应的方法定义。作为参考,我正在运行的Idea版本是:

OS X 10.9.5

Oracle 1.8u102上运行,项目JDK为<html> <body> Ref: <a href='https://bost.ocks.org/mike/circles/' target='x'> https://bost.ocks.org/mike/circles/ </a> <script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script> <script> // I should create 3 circles var svg1 = d3.select('body') .append('svg') .attr('id','svg1') .attr('width',800).selectAll("circle") .data([0, 1, 2]) .enter() .append("circle") .attr("cy", 60) .attr("cx", function(d, i) { return i * 100 + 30 }) .attr("r", function(d) { return 5+5*d }) // So far so good. I see 3 circles // Now I should remove some. var mycircles_a = svg1.selectAll("circle") .data([99, 88]) // I should ask D3 to make the data-array sync with the circle-elements: mycircles_a.exit().remove() // Above call fails for some reason; I still see 3 circles! // I should see 2 circles because mycircles_a is bound to an array with only 2 values. 'bye' </script> </body> </html>

我认为构建版本中的U代表“终极”。

我的猜测(就是这样)是FML文件和Controller文件的链接可能是一个“终极”功能。尝试下载终极试用版,看它是否有效。

尽管IDEA社区应该支持JavaFX,但只有Ultimate支持CSS解析和智能编辑,这是JavaFX开发的重要部分,因此在任何情况下,Ultimate都更适合JavaFX。