2015-04-23 57 views
-1

這是我Menu.fxml:的菜單項JavaFX的動作處理程序不執行任何操作(FXML)

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

<?import java.lang.*?> 
<?import java.util.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<StackPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="biblereader.control.MenuController"> 
    <MenuBar fx:id="menu"> 
     <menus> 
      <Menu text="File" fx:id="fileMenu"> 
       <items> 
        <MenuItem text="Open..." fx:id="open" onAction="#handleOpenAction" /> 
        <MenuItem text="Exit" fx:id="exit" onAction="#handleExitAction" /> 
       </items> 
      </Menu> 
      <Menu text="Results" fx:id="resultsMenu"> 
       <items> 
        <MenuItem text="Save All Results" /> 
        <MenuItem text="Load Results" /> 
       </items> 
      </Menu> 
     </menus> 
    </MenuBar> 
</StackPane> 

這裏是我的MenuController.java:

package biblereader.control; 

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.application.Platform; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Menu; 
import javafx.scene.control.MenuBar; 
import javafx.scene.control.MenuItem; 

/** 
* FXML Controller class 
* 
* @author nathan 
*/ 
public class MenuController implements Initializable { 
    @FXML private MenuBar menu; 
    @FXML private Menu test; 
    @FXML private MenuItem open; 
    @FXML private MenuItem exit; 

    /** 
    * Initializes the controller class. 
    * @param url 
    * @param rb 
    */ 
    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     // TODO 
    }  

    @FXML 
    private void handleExitAction(ActionEvent event) { 
     System.out.println("exiting"); 
     System.exit(0); 
     Platform.exit(); 
    } 

    @FXML 
    private void handleOpenAction(ActionEvent event) { 
     System.out.println("open bible"); 
    } 
} 

我嘗試了幾種不同的方法來使動作事件實際觸發,但我沒有做任何事(通過FXML)實際上完成了動作事件觸發。

菜單顯示正常,但菜單項點擊沒有任何反應。

是的,我曾嘗試做以下爲好,在控制器:

exit = new MenuItem("Exit"); 
    exit.setOnAction((ActionEvent e) -> { 
    System.exit(0); 
}); 

儘管如此,沒有什麼我都試過了工作。任何幫助我能得到這個將非常感激。

+0

請閱讀[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – Roland

+0

好吧,出於好奇,我浪費了我的時間,並創建了一個你的代碼中的應用程序。結果:一切正常,事件正在發射。所以問題出在你沒有向我們展示的代碼中。 – Roland

回答

0

正如Roland指出的那樣,其他地方出現了一些錯誤,這些錯誤來自一些重構問題。

相關問題