2015-04-26 18 views
3

我是JavaFX的新手,目前遇到一些麻烦与onAction事件与不同包内的类。FXML和控制器在不同的包 - 按钮onAction问题

这里是包树:

enter image description here

下面是代码不工作样品:

onAction="#handleSubmitButtonAction" 

<?import java.net.*?> 
<?import javafx.geometry.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.text.*?> 

<GridPane fx:controller="GUIController.AccueilController" 
    xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10"> 

    ... 

    <HBox spacing="10" alignment="bottom_right" 
     GridPane.columnIndex="1" GridPane.rowIndex="4"> 
     <Button text="Se connecter" onAction="#handleSubmitButtonAction"/> 
    </HBox> 

    ... 

</GridPane> 

该错误是由发送说:“处理方法不可访问。公开或用@FXML注释”

这里是AccueilController.java文件:

package GUIController; 

import java.awt.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.scene.text.Text; 

public class AccueilController { 

    @FXML private Text actiontarget; 

    @FXML protected void handleSubmitButtonAction(ActionEvent event) { 
     actiontarget.setText("Sign in button pressed"); 
    } 

} 

正如你所看到的,@FXML标签已被添加,所以我不知道问题出在哪里。这可能有点愚蠢,但我真的无法弄清楚。

顺便说一句,没有onAction行,代码工作完美。

谢谢你们!

+0

将protected void handleSubmitButtonAction更改为公共方法 –

+0

这不会更改任何内容。 – Xema

回答

4

尝试用import javafx.event.ActionEvent代替import java.awt.event.ActionEvent。 JavaFX可能会尝试用另一种类型的参数调用您的方法,并且找不到合适的重载方法。

+0

你是绝对正确的!谢谢 ! – Xema

相关问题